jdk1.8 中HashMap源码的resize()方法

新手上路,请多包涵

clipboard.png

图片中红框圈示代码不懂;
假如原有hashMap的容量为16,下标为15(j=15)的位置存放的是hash值为15,31,47三个数据。扩容后hashMap容量为32,按照代码hiHead中是31,47,存放在下标31(j+16)的位置。但是47&31计算得到的位置不应该是15吗?

阅读 2.2k
1 个回答
✓ 已被采纳新手上路,请多包涵

47&16=0,并没有存放在hiHead中,而是在loHead中,47&31=15,存储位置并没有改变。是计算错误导致的问题,现在已经弄清楚了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题