HashMap:
1.HashMap底层使用数组加链表加红黑树实现
2.初始化大小:16 必须是2的幂次方
3.加载因子0.75,树华因子8,非树华因子是6
4.扩容过程,当元素放置够12个时,或者单链够8个时,进行扩容,扩容需要先创建一个新的数组,再通过重新计算Hash值的方式,来判断元素应该再高位还是低位。
5.树华过程,当元素单链表超过8个元素,同时容器的大小不小于64,进行树华,将量表树华成一个红黑树。
6.HashMap插入方式:在JAVA1.8使用头插法,在JAVA1.7使用尾插法
7.HashMap为什么容器大小必须是2的幂:方便计算桶位置,方便rehash
ConcurrentHashMap:
1.ConcurrentHashMap底层实现与Hashmap一致,但是在涉及多线程操作时,引入了CAS+Synchronized关键字,来保证线程安全。
2.JAVA1.7使用分段锁,JAVA1.8使用CAS+Synchronize