List
–ArrayList 线性表中的顺序表在 内存中分配连续的空间 查 效率高 增 删效率低
–LinkedList 线性表中的双向链表 内存中分配离散的空间 查 效率低 增 删效率高
一 ArrayList
·实现了List接口
·成员变量size 和 capacity 的区别:
size 指的是ArrayList数组元素的个数
capacity 指的是ArrayList开辟的内存空间
·常用方法
isEmpty()
size()
add()
addAll()
remove()
set()
get()
indexOf()
代码示例,一些简单的方法就不写了
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class TestArrayList {
public static void main(String[] args) {
//这里使用了泛型,有两个好处:1 解决了繁琐的强制转换 2 锁定了数据类型,更加安全
List<Integer> list = new ArrayList<>(); //声明一个ArrayList并申请空间,且用到了Java对象的多态,接口的引用指向实现类对象.
System.out.println(list.size());
list.add(43); // 这里其实进行了自动装箱,因为add()的参数是Object,这里自动转成Interger
list.add(35);
list.add(43);
System.out.println(list.get(0));
System.out.println(list.get(0).getClass()); // getClass() 是Object的方法,返回数据类型
ArrayList<Integer> list2 = new ArrayList<>();
list2.add(9);
list2.add(22);
list.addAll(2,list2); //可以在某个位置添加一个Collection
System.out.println(list);
//遍历
//1 for 循环
for (int i = 0; i < list.size(); i++) {
int elem = list.get(i);
System.out.println(i + " " + elem);
}
//2 foreach 循环 JDK1.5特性
for (int elem: list) {
System.out.println(elem);
}
//3 Iterator迭代器
Iterator<Integer> it = list.iterator();
while (it.hasNext()) {
int elem = it.next();
System.out.println(elem);
}
}
}
二 LinkedList
常用方法比ArrayList多了一些