求大神帮忙,面试被问到标题上的问题,该怎么回答?还有就是hash碰撞又该怎么回答?
2 回答
慕无忌7406412
TA贡献4条经验 获得超1个赞
HashMap底层采用数组加链表的方式实现,位桶数组默认大小是16(必须是2的整数次幂),当数组里面的元素装满3/4的时候就会自动扩容,一般是原来的两倍大小。所谓的哈希碰撞就是你put一个键值对进去时,首先会调用key的hashcode()方法产生一个哈希码,再调用hash()方法产生一个哈希值,这个哈希值就是位桶数组的索引。如果此时位桶数组该索引位置已经放了键值对进去了,就产生了哈希碰撞。此时会采取单向链表的方式,调用key的equals()方法挨个比较链表里节点的key值,若返回true,则用新的value值覆盖原来的value值,否则让最后一个节点指向你put进去的键值对。
添加回答
举报
0/150
提交
取消