1 HashCode的作用就是将数据分组,这样数据进行比较的时候只需要跟它对应组的数据一一比较就好,大大提高效率。
2 HashMap的实现原理就是通过数组和链表来实现的。
数组存储的是HashCode对应的一个Entry对象,
Entry对象就是一个链表结构,该链表将所有相同HashCode值的Entry对象串起来。
这样在比较一个对象是否存在与HashMap中的时候只需要比较相同HashCode下的对象是否相等就好了。当存在大量数据的时候,HashCode越多,分组就越多,对象比较的次数就越少,效率就越高。
3 HashMap中的HashCode是优化过的,先将Key值获取Hashcode,然后在进行一次自定义的Hash 优化,优化后得到的hash值在与数组长度的减一进行与运算(2^n -1)得到Entry在数组中的索引。
这个很巧妙,数组长度总是2的N次方,2N次方减1后的二进制全是1,这样和hash值进行与运算的时候会均匀分布,如果存在0的情况下,与运算后总有地方是0,导致分布不均匀。就会导致某个数组下的Entry特别多,遍历效率降低。
网友评论