List接口介绍
接口特点
有序 可重复
-
有序
元素存入集合的顺序和去取出集合的顺序一致。List当中的每个元素都有索引标记。可以根据元素的索引标记访问元素,从而精确控制这些元素。
-
可重复
允许加入重复的元素。也就是说,List通常允许满足e1.equals(e2) 的元素重复加入容器。
常用方法
ArrayList容器的基本使用
Array是List接口的实现类。是List存储特征的具体实现。
ArrayList的底层使用数组实现的存储。
特点:查询效率高,增删效率低,线程不安全
ArrayList的并集,交集,差集
- 并集
a.addAll(b); - 交集
a1.retainAll(b1); - 差集
a2.removeAll(b2);
ArrayList源码分析
具体见文档
Vector容器的基本使用
底层是使用数组实现的,相关方法都做了同步检查,所以,线程安全,效率低。
Vector的使用
与ArrayList相同
LinkedList容器介绍
底层采用双向链表实现的存储。特点:查询效率低,增删改效率高,线程不安全
List实现类的选用规则
- 需要线程安全时,用Vector。
- 不存在线程安全问题时,并且查找较多用ArrayList(一般使用它)
- 不存在线程安全问题时,增加或删除元素较多用LinkedList
LinkedList容器的使用(List标准)
LinkedList实现了List接口,所以LinkedList是具备List的存储特征的(有序,元素有重复)。
LinkedList容器的使用(非List标准)
LinkedList的源码分析
具体见文档