概览
Collection
- Set:TreeSet HashSet LinkedHashSet
- List:ArrayList Vector(线程安全) LinkedList
- Queue:LinkedList PriorityQueue(基于堆结构实现,可以实现优先级队列,构造大顶堆/小顶堆)
Map:TreeMap HashMap HashTable(线程安全,但应该使用ConcurrentHashMap,其引入了分段锁,效率更高) LinkedHashMap
分析
ArrayList
- 支持快速随机访问、默认大小为10
- 基于动态数组实现,具有动态扩容性
Vector
- 和ArrayList类似,但用了synchronized进行同步,是线程安全的
- 可以用Collections.synchronizedList()得到线程安全的ArrayList代替
CopyOnWriteArrayList
- 读写分离,适用读多写少的情况
LinkedList
-
基于双向链表实现
-
不支持随机访问但插入删除效率高
-
HashSet基于HashMap实现(都是哈希表),LinkedHashSet是HashSet的子类,内部通过LinkedHashMap实现。
-
TreeSet/TreeMap有序且唯一,基于红黑树实现
-
Map(需要键值存储时):需要排序使用TreeMap,不需要排序使用HashMap,需要保证线程安全时用ConcurrentHashMap
-
Collection(只需要存放元素):需要唯一用Set,否则用List