hashmap实现机制

int uInt = key.getHashCode()&0x8FFFFFF;(具体多少忘记了,总之就是把它弄成正数)
int index = uInt % map.length;

把value放到那个 index位置。

下次访问时再通过 key的hashCode() & 0x8FFFFF;再 % map.length;就知道value放在第几个位置了。
这样map的要得到一个value只跟key运算成index相关,和元素多少相关不大(不大是从理论上说不管多少元素
反正都是根据key算成index直接去那个位置取的,而不会一个一个查找,但实际是相关的,元素多时产生index聚集的机会就多)

如果不同的key得到相同的 index,那么在相同的位置就要保存多个value.
所以hp内部每个元素实际上先放链表实现的Entity.这样一个位置就可以放多个元素。

猜你喜欢

转载自tohsj0806.iteye.com/blog/1452901