1.集合特性与数据结构对照表
| 接口 | 实现类 | 数据结构 | 是否有序 | 元素能否重复 | 特点 | 备注 | |
| Collection 单列集合 |
List | ArrayList | 数组Array | 有序 | 可重复 | 查询快,增删慢,线程不安全,效率高 | |
| Vector | 数组Array | 有序 | 可重复 | 查询快,增删慢,线程安全,效率低 | 已淘汰 | ||
| LinkedList | 链表linked | 有序 | 可重复 | 查询慢,增删快,线程不安全,效率高 还实现了Deque接口,可做队列使用 |
|||
| Queue 队列 |
ArrayDeque | 基于数组的双端队列,也可用于模拟栈 | 有序 | 可重复 | 可以代替stack实现栈结构 | ||
| Set | HashSet | 哈希表hash | 无序 | 不可重复 | 哈希表依赖两个方法 hashCode()、equals() 效率高 |
线程不安全 | |
| LinkedHashSet | 链表+哈希表 | 有序 | 不可重复 | 链表保证有序,哈希表保证唯一 效率稍低 |
|||
| TreeSet | 二叉树BinaryTree 之红黑树 |
有序 | 不可重复 | 根据比较的返回值保证唯一 有两种排序方式保证有序: 自然排序(实现Comparable接口) 比较器排序(使用Comparator对象) 效率低 |
|||
| EnumSet | 专为枚举类设计 | 有序 | 不可重复 | 根据enum类内的定义顺序排序 set集合中效率最高 |
|||
| Map 双列集合 |
HashMap | 哈希表hash | 无序 | key不可重复 | 线程不安全,效率高 | ||
| Hashtable | 哈希表hash | 无序 | key不可重复 | 线程安全,效率低 | 已淘汰 | ||
| LinkedHashMap | 链表+哈希表 | 有序 | key不可重复 | 链表保证元素有序 哈希表保证元素唯一 效率低 |
|||
| TreeMap | 二叉树BinaryTree 之红黑树 |
有序 | key不可重复 | 根据比较的返回值保证唯一 使用排序方式保证有序 效率稍低 |
|||
对于线程不安全的集合,应该通过Collections工具类对应的synchronizedXxx方法将其包装成线程安全的集合类。
2.关于集合选用原则

转载请注明:运维博客 » Java中的常见集合特性与数据结构关系、集合选用原则