<<Collection>> —— <<List>> —— ArrayList 使用数组来实现
| |—— LinkedList 使用链表来实现
| |—— Vector —— Stack 线程同步的,即可以在多线程下操作,而不需要进行同步
| |—— CopyOnWriteList 用于代替同步List(即用Collections.synchronised()包装的List)
| 使用场景:读取远大于写入,例如监听器列表
|—— <<Set>> —— HashSet —— LinkedHashSet
| |—— <<SortedSet>> —— TreeSet 有序
| |—— CopyOnWriteArraySet 用于替代同步Set|—— <<Queue>> —— LinkedList
|—— PriorityQueue
|—— ConcurrentLinkedQueue
|—— <<BlockingQueue>> —— LinkedBlockingQueue 阻塞操作的队列(生产者--消费者模型):
take():无元素时,取会阻塞;put():满时,加入会阻塞
另外Map没有继承Collection接口:
<<Map>> —— HashMap —— 允许存在一个键为null
|—— Hashtable —— 键不能为null,线程同步的
|—— <<SortedMap>> —— TreeMap 有序
|—— <<ConcurrentMap>> —— ConcurrentHashMap 用于替代同步Map,与Hashtable/同步Map的不同之处:
- 它不独占访问,采用分段式锁,允许任意数量的读和一定数量的写,吞吐量高
|—— ConcurrentSkipListMap 用于替代同步SortedMap
注:<<Xxxx>>表示接口