HashMap记忆点

119 阅读1分钟

1.几个概念:capacity、loadFactor、threshold、size

2.hash方法?对比1.7/1.8,1.8的hash结果不是最终数组的index,为什么要无符号向右移动16     位,为什么要异或运算?扰动函数

3.算index的时候hash&(n-1),这里为什么要是n-1

3.new 的时候做了什么操作?

4.get操作

5.空集合新增的逻辑?

6.非空集合新增逻辑(1:key一样覆盖,返回旧值,2:无相同key新增,树节点新增)

7.如果一个bucket中碰撞冲突的元素超过某个限制(默认是8),则使用红黑树来替换链表,从而提高速度(小于8的还是链表),如果红黑树size降低到2-6之间,则转回到链表结构。

8.resize的逻辑,扩容以后,所有元素的index要重新算过

9.map是先加元素到table,如何在判断是否扩容

10.在1.8版本,无论resize再怎么变化,数组的元素在数组的index可能会变,但是hash不会变(高位的作用)

11.每次扩容扩多少,怎么扩?

12.头插和尾插比较

13.怎么把尾插我的问题说明白 3>7>3>7(实际上,两个3和两个7的指向的是同一个地址,所以会死循环)