list 是一个接口, 实现类: Arraylist,Vector,Linkedlist
list 接口:
常用方法
排除 Collection 中具有的之外的
添加功能
void add(int index, E element): 在指定位置添加元素
boolean addAll(int index, Collection<? extends E> c): 在指定位置添加一组元素
判断功能
int indexOf(Object o): 查找某个元素所在位置
int lastIndexOf(Object o): 元素最后一次出现位置.
获取功能
E get(int index): 根据下标获取元素
int size(): 返回集合的元素个数
List<E> subList(int fromIndex, int toIndex): 根据下标获取指定返回内的元素, 返回一个新的集合
修改功能
E set(int index, E element): 修改某个位置的元素, 返回被修改元素.
E remove(int index): 根据索引删除元素, 返回被删除的元素.
特定迭代器
ListIterator<E> listIterator(): 获取列表迭代器, 开始位置 0
ListIterator<E> listIterator(int index): 获取从指定位置开始的迭代器
ListIterator
List 集合特有的迭代器, 在 Iterator 的基础上进行了增强, 可以获取上一个元素, 提供了以下方法:
boolean hasPrevious(): 是否有上一个元素
E previous(): 获取上一个元素
void add(E e): 添加元素
void set(E e): 用指定元素替换 next 或 previous 返回的最后一个元素(可选操作)
void remove(): 从列表中移除由 next 或 previous 返回的最后一个元素 (可选操作), 而 Iterator 中只能替删除 next() 元素
int nextIndex(): 返回对 next 的后续调用所返回元素的索引.
int previousIndex(): 返回对 previous 的后续调用所返回元素的索引.
List 的遍历
方法一: 配合 size()函数和 get(index)函数使用 for 循环遍历
方法二: 使用 iterator 迭代器遍历
方法三: 使用 ListIterator 遍历.
ArrayList:
特点:
1: 大小可变
2: 底层实现是数组, 默认容量为 10
3: 扩容方式: 原始容量 + 原始容量的一半
4:new ArrayList<>()的时候容量为 0, 第一次添加 (add) 之后容量为默认容量, 最开始的时候存放数据的数组为{ }
5: 线程不安全, 读写块, 插入或者删除效率低
6: 迭代器是快速失败的
Vector:
特点:
1: 大小可变
2: 底层实现是数组, 默认容量为 10
3: 扩容方式: 原始容量的 2 倍 (如果使用 public Vector(int initialCapacity, int capacityIncrement) 来构造 Vector, 扩容方式为当前容量 + capacityIncrement.new Vector<>()的时候就变为默认容量)
4: 线程安全, 读写快, 插入, 删除效率低
5: 由于效率低下, 很少被使用, 如果需要使用线程安全的数组, 可以使用 Vector 来代替
6: 迭代器是快速失败的
LinkedList:
特点:
1: 底层是双向链表
2: 线程不安全
3: 查询效率低, 随机插入和删除快
来源: http://www.bubuko.com/infodetail-2776159.html