一、概述
上层接口是Collection,有索引,可以重复存储
下层接口有3个子类,分别是ArrayList,Vector,LinkedList
二、子类比较
ArrayList:
底层是数组,查询修改快,增加删除慢
线程不安全,但效率高
Vector:
底层是数组,查询修改快,增加删除慢
线程安全,但效率低
LinkedList:
底层是链表,查询修改慢,增加删除快
线程不安全,但效率高
三、List集合特有的方法
void add(int index,E element)
E remove(int index)
E get(int index)
E set(int index,E element)
可以发现:多了索引
四、List集合的遍历
方法一:通过size()和get()方法
案列演示:
List list = new ArrayList(); //父类引用指向子类对象
list.add(new Student("张三", 23));
list.add(new Student("李四", 24));
list.add(new Student("王五", 25));
list.add(new Student("赵六", 26);
for(int i = 0; i < list.size(); i++) {
// System.out.println(list.get(i)); 返回指定位置的元素
Student s = (Student)list.get(i); //强转成Student对象
System.out.println(s.getName() + "," + s.getAge());
}
方法二:通过迭代器迭代
Iterator <Student>it=list.iterator(); //使用了泛型
while(it.hasNext()){
System.out.println(it.next());
}
方法三:使用增强for循环-内部使用的其实仍然是迭代
for(Student s:list){
System.out.println(s);
}