一 前言
本次重新撰写技术类文章,不为别的,只为整理自己日常所学,亦为了大家共同交流努力的目的。文章以面试为目的,故不在赘述java中特别基础的部分,如基本数据类型,线程基本实现等。
java集合分为两大类:一类是Collection下的List,set,queue;另外一类是map。
二 传统的JAVA集合类
1.List的主要实现
list的实现 |
特点 |
ArrayList |
动态数组,底层基于数组实现,线程不安全 |
LinkedList |
双重链表实现的队列,线程不安全 |
Stack |
先进后出,基于Vector实现,线程安全 |
Vector |
动态数组,线程安全 |
2.Set的主要实现
Set的实现 |
特点 |
HashSet |
基于HashMap实现,元素不可重复,迭代无序 |
TreeSet |
基于TreeMap实现(NavigableSet),元素无序,不重复 |
LinkedHashSet |
元素有序,维护一个双重链表以保证有序 |
3.Map的主要实现
Map的实现 |
特点 |
HashMap |
基于哈希表的 Map 接口的实现,线程不安全 |
TreeMap |
基于红黑树(Red-Black tree)的 NavigableMap 实现,该类的<k,v>是有序,线程不安全 |
HashTable |
基于哈希表的Map实现,线程安全 |
WeakHashMap |
以弱键 实现的基于哈希表的 Map。在 WeakHashMap 中,当某个键不再正常使用时,将自动移除其条目。该类是非线程安全的 |
三 JUC集合类
1.List的主要实现
list的实现 |
特点 |
CopyOnWriteArrayList |
相当于线程安全的ArrayList,它实现了List接口,读写分离,他是线程安全的 |
2.Set的主要实现类
Set的实现 |
特点 |
CopyOnWriteArraySet |
相当于线程安全的HashSet,内部使用 CopyOnWriteArrayList |
ConcurrentSkipListSet |
一个基于 ConcurrentSkipListMap 的可缩放并发 NavigableSet 实现,内部排序是有序的 |
3.Map的主要实现类包括
Map的实现 |
特点 |
ConcurrentHashMap |
支持获取的完全并发和更新的所期望可调整并发的哈希表 |
ConcurrentSkipListMap |
可缩放的并发 ConcurrentNavigableMap 实现,内部排序是有序的Map,该类为线程安全的 |
4.Queue的主要实现类
Queue的实现 |
特点 |
ArrayBlockingQueue |
一个由数组支持的有界阻塞队列。此队列按 FIFO(先进先出)原则对元素进行排序 |
LinkedBlockingQueue |
一个基于已链接节点的、范围任意的 blocking queue。此队列按 FIFO(先进先出)排序元素 |
LinkedBlockingDeque |
一个基于已链接节点的、任选范围的阻塞双端队列 |
ConcurrentLinkedQueue |
一个基于链接节点的无界线程安全队列。此队列按照 FIFO(先进先出)原则对元素进行排序 |
ConcurrentLinkedDeque |
是双向链表实现的无界队列,该队列同时支持FIFO和FILO两种操作方式 |