面试题-04:HashMap

阿里面试题1阿里面试题2阿里面试题3阿里面试题4

1、HashMap的默认容量为2^4=16

2、如果创建HashMap对象时,数组大小如果不是2的幂次方,底层会把它变成2的幂次方。HashMap的数组大小为什么一定是2的幂次方:
(1) 取模是为了得到数组的索引值(m%n的范围一定是:0~n)
(2) 按位与运算相对于取模运算效率更高
(3) 按位与运算后可以生成索引值,并且索引值一定小于数组的长度。
在这里插入图片描述3、从上面可以看出我们在通过hash值计算索引时,仅仅利用了hash值的低位信息,为了充分利用hash值,使用了>>>与^,不断的右移不断的利用高位的信息得出索引:
在这里插入图片描述4、装载因子即节点总数量/哈希表数组长度,如果装载因子超过0.75,就扩容为原来的2倍。因为当链表的节点很多时,就会导致查询的的效率很低。扩容的时候会重新计算hash值,而且会带来链表成环导致死循环的问题。

5、Java8如何解决哈希冲突?
在这里插入图片描述

发布了665 篇原创文章 · 获赞 115 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/qq_42764468/article/details/104966738