JAVA面试基础篇(JAVA集合)(一)

一 前言

本次重新撰写技术类文章,不为别的,只为整理自己日常所学,亦为了大家共同交流努力的目的。文章以面试为目的,故不在赘述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两种操作方式

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章