本文主要整理Collection集合相关接口。Collection接口下有两个子接口List和Set,本着大家浅显易懂和便于自我整理的思想,本人整理了一个表。
List:List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引来访问List中的元素,这类似于Java的数组。
Set:不包含重复的元素的Collection,即任意的两个元素e1和e2都有e1.equals(e2)=false,Set最多有一个null元素。很明显,Set的构造函数有一个约束条件,传入的Collection参数不能包含重复的元素。
是否有序 | 是否线程同步(安全) | 是否允许空值(null) | 是否允许相同元素 | 存储形式 | 其他特性 | |
LinkedList | 有序 | 不同步 | 允许 | 允许 | 链表数组 | 插入删除效率高 可做堆栈,队列,双向队列 |
ArrayList | 有序 | 不同步 | 允许 | 允许 | 线性数组 | 查询效率高 容量不够默认扩展原来1.5倍 |
Vector | 有序 | 同步 | 允许 | 允许 | 线性数组 | 查询效率高 容量不够默认扩展原来2倍 |
Stack | 有序 | 同步 | 允许 | 允许 | 栈(线性数组) | 后进先出 |
HashSet | 无序 | 不同步 | 最多允许1个 | 不允许 | 链表数组 | 底层实现为HashMap,因此不保证迭代顺序 |