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);}//增强forfor (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
底层也是对象数组,线程同步(安全)