Collection接口的子接口
子类Vector,ArrayList,LinkedList
1.元素的添加顺序和取出顺序一致,且可重复
2.每个元素都有其对应的顺序索引
方法
- 在index = 1 的位置插入一个对象,list.add(1,list2)
- 获取指定index位置的元素,Object get(int index)
- 返回obj在集合中首次出现的位置,int indexOf(Object obj)
- 返回最后出现的位置 int lastIndexOf( Object obj )
- 移除指定index位置的元素,并返回 Object remove (int index)
- 用ele替换指定index位置的元素 Object set (int index ,Object ele)
- 返回fromIndex 到toIndex位置的子集合, List sublist(int fromIndex, int toIndex)
遍历方式
1.Iterator
2.增强for循环
3.普通for循环
package chapter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class noStatue {
public static void main(String[] args) {
@SuppressWarnings({"all"})
List list = new ArrayList();
list.add("jack");
list.add("wow");
//迭代器
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
Object next = iterator.next();
System.out.println(next);
}
//增强for
for (Object o :list) {
System.out.println(o);
}
//普通for循环
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
ArrayList
- ArrayList可以加入多个null
- 由数组实现数据存储
- 基本等同于Vector,但ArrayList,执行效率高,线程不安全,多线程不建议使用
- 底层为对象数组
底层结构与源码分析
p 511
无参构造器,初始容量为0,第一次增加为10,在扩容,则扩容到1.5倍
指定大小的构造器,初始容量为指定,扩容后为1.5倍
Vector
底层也是对象数组,线程同步(安全)