一、概览
Collection
- Set
- TreeSet:
- 无序,不可重复,自动排序;
- 存放在TreeSet中相当于存放到TreeMap的key部分
- HashSet:
- 无序,不可重复,支持快速查找;
- 存放在HashSet中相当于存放到HashMap中的key部分
- LinkedHashSet:基于双向链表实现,具有HashSet的查找效率
- List
- ArrayList:
- 基于动态数组实现,支持随机访问
- 增删元素通过移动元素实现,效率较低
- Vector:
- 和ArrayList类似
- 线程安全,但效率较低,现在大多不用
- LinkedList:
- 基于双向链表实现,增删元素效率高,但查询效率低(每次都要从头结点开始)
- LinkedList还可以用作栈、队列和双向队列
- Queue:
- LinkedList:可以用它来实现双向队列
- PriorityQueue:基于堆结构实现,可以用它来实现优先队列
Map
- TreeMap:基于红黑树实现,会根据key自动排序
- HashMap:基于哈希表实现
- HashTable:
- 和HashMap类似
- 线程安全。但他是遗留类,现在大多不用;而是使用ConcurrentHashMap来支持线程安全
- LinkedHashMap:
- 使用双向链表来维护元素的顺序
- 顺序为插入顺序或者最近最少使用(LRU)顺序
二、容器中的设计模式
- 迭代器模式:Collection继承了Iterable接口,其中的iterator()方法能够产生一个Iterator对象
- 适配器模式:java.util.Arrays#asList()可以把数组类型转换为List类型