java集合框架结构

1、总体结构


 

 

 

 

 Map和Collection是分开的。Collection下有List Queue Set 3个接口。

 

2、List结构


 

 

3、Set结构


 

 

 

 

4、Queue结构


 

 

 

5、Map结构


 

 

 

6、Deque结构


 

 

 

7、常用的List


ArrayList: 数组实现,初始长度10,每次扩容增加0.5倍(0.5倍可以通过位移>>1操作完成);

                最大长度Integer.MAX_VALUE , 并非Integer.MAX_VALUE - 8;

LinkedList:双向链表实现, 可用于栈 队列实现。

 

线程安全:

Collections.synchronizedList(list)实现,

Vector也是线程安全的(过时 不建议使用)

CopyOnwriteArrayList


 

8、常用的Set


HashSet:以HashMap实现的,只能存一个null值

LinkedHashSet:继承HashSet 可以按存入的顺序进行迭代。

TreeSet:以TreeMap实现 内部按compareTo进行比较 所有不能存null,否则空指针异常。

ConcurrentHashSet(google guava实现)

 

9、常用的Queue


PriorityQueue : 非FIFO队列 按优先级排序

 

线程安全:

ArrayBlockingQueue:数组实现 阻塞队列 需要指明初始大小,线程安全

LinkedBlockingQueue:列表实现 阻塞队列,可以不指明初始大小,默认Integer.MAX_VALUE;线程安全

ConcurrentLinkedQueue:链表实现 不阻塞 长度无限制;线程安全

PriorityBlockingQueue : 优先级队列 线程安全版本

 

10、常用的Deque (双向队列 可当做栈使用,深度遍历算法时可以使用)


ArrayDeque:动态数组 长度是2的幂次方;作为栈时性能比LinkedList好;非线程安全

LinkedList:双向链表实现 ,非线程安全

 

线程安全:

ConcurrentLinkedDeque:链表实现

LinkedBlockingDeque:阻塞链表

栈的实现还有一个Stack类,继承Vector,线程安全(过时了 不建议使用) 

 

11、常用的Map


HashMap:只能存放一个null key

TreeMap: 不能存放null key

 

线程安全:

ConcurrentHashMap:线程安全

 

 


 

posted @ 2019-09-05 23:43  蓝天随笔  阅读(1043)  评论(0编辑  收藏  举报