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中的常见集合特性与数据结构关系、集合选用原则