1、一直put 最多能put多少个?
无限个,堆内存有多少个,JVM的配置
2、JDK 1.8
线程安全
不可变,
3、index
1.7 key的hashCode 直接与
1.8 变化的是 不再是直接与 length 其实目标就是更随机一点
4、为什么要与length-1进行与运算
取余
百分号取余
&length - 1 10000 - 1 = 01111
5、为什么length要是2的幂次方
6、
超过负载因子就会扩容
扩容时,达到最大值
7、
16 -> 扩容为32 1111 -> 11111 第五位如果是0,如果是1 在高位加1 要么不移位 要么就是原来的位置加原来的数组
不需要看是1,或者
赋值
8、1.7(头插法 ) & 1.8(尾插法 ) resize过程
查找区别不大
但是在resize的过程 中会有所区别
如果采用头插法,可能会链表成环
9、
1)头插法
2)红黑树
3)hash()方法有区别
10、为什么HashMap的初始容量是16?
不一定是要16,一定要是2的幂次方
感觉应该是经验方面,链表的长度为8