容器
Collection
List 有序可重复,和数组类似,List可以动态增长,查找元素的效率较高,插入元素和删除元素效率低,因为会引起其他元素位置发生变化。
CopyOnWriteList CopyOnWrite容器即写时复制的容器。通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器。这样做的好处是我们可以对CopyOnWrite容器进行并发的读,而不需要加锁,因为当前容器不会添加任何元素。所以CopyOnWrite容器也是一种读写分离的思想,读和写不同的容器。
Vector Stack
ArrayList 动态数组
LinkedList :链表,队列,堆栈
Set 无序不可重复,插入和删除的效率高,插入和删除不会引起元素的位置变化。
HashSet
LinkedHashSet
SortedSet TreeSet
CopyOnWriteArraySet
ConcurrentSkipListSet 跳表, 跳跃表其实也是一种通过“空间来换取时间”的一个算法,通过在每个节点中增加了向前的指针,从而提升查找的效率。
Queue
Deque 双端队列
ArrayDeque
BlockingDeque LinkedBlockingDeque 可以使用LinkedBlockingDeque来实现工作窃取算法
BlockingQueue 队列
ArrayBlockingQueue
PriorityBlockingQueue 按照某种排序规则进行排序,从而改变先进先出的队列顺序,提供开发者改变队列中元素的顺序的能力
LinkedBlockingQueue
TransferQueue LinkedTransferQueue LinkedTransferQueue
是 SynchronousQueue
和 LinkedBlockingQueue
的合体,性能比 LinkedBlockingQueue
更高(没有锁操作),比 SynchronousQueue
能存储更多的元素
SynchronousQueue
PriorityQueue 是一个根据队列里元素某些属性排列先后的顺序队列
ConcurrentLinkedQueue
DelayQueue 延迟队列,就是在每次往优先级队列中添加元素,然后以元素的delay/过期值作为排序的因素,以此来达到先过期的元素会拍在队首,每次从队列里取出来都是最先要过期的元素
Map
HashMap 无序
LinkedHashMap 有序
TreeMap 红黑树
WeakHashMap
ConcurrentHashMap
IdentityHashMap