码迷,mamicode.com
首页 > 其他好文 > 详细

HashMap resize方法的理解(一)

时间:2018-01-26 18:47:45      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:判断   post   选择   padding   cap   空间   width   增加   pos   

对于oldTable中存储的为15、7、4、5、8、1,长度为8的一个数组中,存储位置如下

0

1

2

3

4

5

6

7

8

1

 

 

4

5

 

15

7

 

 

 

 

 

 

 

当扩容到一倍后,对于新的位置的选择通过e.hash & oldCap 确认其在新的数组中的位置,

如:

8:1000 与原来长度8:1000相与后,为1,则在新的数组中的位置,为原位置加上原数组长度即可。避免了重新计算数组位置。

对于7:111与原长度8:1000相与后,为0,表示其在新数组中的位置是不变的,仍在在7的位置上。

在求新数组的位置时,其仅是最高位上增加了1而已,与原数组长度最高位是一致的,忽略低位信息,可以直接判断出其在原数组中是否已经超过了本身的长度,形成了数据链。

最后在新的空间中存储如下:

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

 

1

 

 

4

5

 

7

8

 

 

 

 

 

 

15

HashMap resize方法的理解(一)

标签:判断   post   选择   padding   cap   空间   width   增加   pos   

原文地址:https://www.cnblogs.com/woniu4/p/8301099.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!