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:线程安全

 

 


 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM