hashmap为啥会发生碰撞?

拉链法解决冲突的做法是:将所有关键字为同义词的结点链接在同一个单链表中。若选定的散列表长度为m,则可将散列表定义为一个由m个头指针组成的指针数组t[0..m-1]。凡是散列地址为i的结点,均插入到以t为头指针的单链表中。t中各分量的初值均应为空指针。在拉链法中,装填因子α可以大于1,但一般均取α≤1。

换句话说:HashCode是使用Key通过Hash函数计算出来的,由于不同的Key,通过此Hash函数可能会算的同样的HashCode,所以此时用了拉链法解决冲突,把HashCode相同的Value连成链表. 但是get的时候根据Key又去桶里找,如果是链表说明是冲突的,此时还需要检测Key是否相同

总之hashmap的碰撞就是hashcode相同的意思啦,如果加载因子定的过小,扩容的空间还是不够大的,这样发生冲突的概率还是很大,所以定位0.75也是一个经过权衡对比之后的结果

猜你喜欢

转载自blog.csdn.net/q957967519/article/details/81297209