图片中红框圈示代码不懂;
假如原有hashMap的容量为16,下标为15(j=15)的位置存放的是hash值为15,31,47三个数据。扩容后hashMap容量为32,按照代码hiHead中是31,47,存放在下标31(j+16)的位置。但是47&31计算得到的位置不应该是15吗?
图片中红框圈示代码不懂;
假如原有hashMap的容量为16,下标为15(j=15)的位置存放的是hash值为15,31,47三个数据。扩容后hashMap容量为32,按照代码hiHead中是31,47,存放在下标31(j+16)的位置。但是47&31计算得到的位置不应该是15吗?
15 回答8.4k 阅读
8 回答6.3k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
1 回答2.1k 阅读✓ 已解决
47&16=0,并没有存放在hiHead中,而是在loHead中,47&31=15,存储位置并没有改变。是计算错误导致的问题,现在已经弄清楚了