常用集合概览
Collection集合体系
Map体系
Set
- 不允许包含重复元素、无序的
- Java先实现Map集合,通过包装一个Map集合的所有value为null,就形成了一个Set集合
类 | 线程安全 | 特点 |
---|---|---|
HashSet | 不安全 | 用Hash算法来存储集合元素,基于数组,出现相同hashCode值的元素,在相同位置用链式结构存储,查询和存储性能好 |
LinkedHashSet | 不安全 | 同时使用链表维护元素次序,遍历快,输出元素的顺序与添加顺序一致 |
TreeSet | 不安全 | 用红黑树存储,元素有序 |
EnumSet | 不安全 | 为枚举类设计的集合类,有序 |
List
- 元素有序,可重复
- 可以根据索引来返回集合中的元素
类 | 线程安全 | 特点 |
---|---|---|
ArrayList | 不安全 | 封装了一个可以动态分配的数组,性能比Vector高,具有较高的随机访问性能 |
Vector | 安全 | 古老,类似ArrayList,效率较低,不推荐使用 |
LinkedList | 不安全 | 底层用链表形式存储集合数据,随机访问性能较差,插入、删除性能出色 |
- 对于ArrayList和Vector集合,使用随机访问方法(get)遍历,性能更好
- 对于LinkedList集合,使用迭代器(Iterator)来遍历,性能更好
Queue
- 队列,先进先出(FIFO)
类 | 特点 |
---|---|
PriorityQueue | 不是绝对标准的队列,按元素大小排列 |
Deque/ArrayDeque | 双向队列,可以当栈使用 |
Map
类 | 线程安全 | 特点 |
---|---|---|
HashMap | 不安全 | 性能高,可以使用null作为key和value的值 |
Hashtable | 安全 | 古老,不能使用null,比HashMap慢,不推荐使用 |
LinkedHashMap | 不安全 | 使用双向链表来维护key-value对次序,性能略低于HashMap,但是遍历性能好 |
Collections工具类
- 提供多个synchronizedXxx方法,包装集合,使其变成线程安全集合1234Collection c = Collections.synchronizedCollection(new ArrayList());List list = Collections.synchronizedList(new ArrayList());Set set = Collections.synchronizedSet(new HashSet());Map map = Collections.synchronizedMap(new HashMap());