
HashMap
- 线程不安全
- 默认大小16
- 扩增负载因子(16*0.75),就需要resize(扩容两倍之后重排)
(jdk8以前)
- 数组 + 链表

- 链表 + 红黑树(jdk8+),默认长度8超过自动转为红黑树

HashMap 如何解决哈希冲突
- 指不同的键通过哈希函数计算后,得到的哈希值相同,由于HashMap使用有限的数组存储数据,而键的取值范围是无限的,冲突不可避免
- 解决方式
1、链地址法
数组 + 链表
链表 + 红黑树(jdk8+)
2、哈希函数优化
3、动态扩容
ConcurrentHashMap
- 线程安全(CAS+synchronized)
- 默认大小16


