文章为自己的简单理解,其他细节就不展开了。(懒)
目录
二、ArrayList以及Vector和Stack的扩容分析
三、HashMap,HashSet,Hashtable,ConcurrentHashMap的扩容分析
前言
java中集合的底层扩容机制可能会在面试中被提问到,尤为重要
一、集合框架图
图中体现了单列集合以及双列集合的接口实现和继承关系
二、ArrayList以及Vector和Stack的扩容分析
1.源码分析
1.1ArrayList的源码分析
图中可以看出该集合的初始容量为10
这是扩容方法,扩容为原来的1.5倍
1.2vector的源码分析
该集合的初始容量为10
扩容为原来的2倍
1.3stack的源码分析
因为stack继承于vector类,所以,底层扩容和vector相似
2.结论
arraylist集合的初始容量为10,扩容为原来的1.5倍
vector集合的初始容量为10,扩容为原来的2倍
stack同vector
三、HashMap,HashSet,Hashtable,ConcurrentHashMap的扩容分析
1.源码分析
1.1hashmap源码分析
hashmap的数组初始容量为16,当链表中的元素达到8并且数组容量大于64时转换为红黑树,元素为6时自动解体为链表
hashmap扩容为原来的2倍
1.2hashset源码分析
hashset是基于hashmap实现的,所以同上
1.3hashtable源码分析
该集合初始容量为11
扩容为原来的2倍+1
1.4concurrenthashmap源码分析
初始容量为16
扩容机制与hashmap基本相似
2.结论
hashmap,hashset,concurrenthashmap的初始容量为16,扩容机制:数组初始容量为16,当链表中的元素达到8并且数组容量大于64时转换为红黑树,元素为6时自动解体为链表
扩容为原来的2倍
hashtable初始容量为11,扩容为原来的2倍+1
总结
以上就是对java中集合底层扩容机制的一点点内容,哈哈