锁定老帖子 主题:深入理解HashMap
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-04
如果不取& length -1 而是 & length
初始容量给 2 ^ n - 1 应该是一样的吧 为什么说 & length -1 很特别的呢 |
|
返回顶楼 | |
发表时间:2009-12-04
看来平时光知道应用还是不够地,要深入了解原理...
|
|
返回顶楼 | |
发表时间:2009-12-04
,我一直被这个问题很上心,现在看到了,但是看晕了, |
|
返回顶楼 | |
发表时间:2009-12-04
http://www.ibm.com/developerworks/cn/java/j-lo-hash/?ca=drs-tp4608
|
|
返回顶楼 | |
发表时间:2009-12-04
最后修改:2009-12-04
sun128837 写道 http://www.ibm.com/developerworks/cn/java/j-lo-hash/?ca=drs-tp4608
看来这个链接的文章的作者还没有明白h&length-1和2的幂之间的巧妙关系,我估计楼上还没有看过楼主文章就来发链接了吧 |
|
返回顶楼 | |
发表时间:2009-12-05
分析很在理,最主要的是要有一种专研思想
|
|
返回顶楼 | |
发表时间:2009-12-05
火星来客 写道 sun128837 写道 http://www.ibm.com/developerworks/cn/java/j-lo-hash/?ca=drs-tp4608
看来这个链接的文章的作者还没有明白h&length-1和2的幂之间的巧妙关系,我估计楼上还没有看过楼主文章就来发链接了吧 文章的作者明白的非常彻底,h&length-1就是这个作用---低位不变,截掉高位! |
|
返回顶楼 | |
发表时间:2009-12-05
最后修改:2009-12-05
luckaway 写道 火星来客 写道 sun128837 写道 http://www.ibm.com/developerworks/cn/java/j-lo-hash/?ca=drs-tp4608
看来这个链接的文章的作者还没有明白h&length-1和2的幂之间的巧妙关系,我估计楼上还没有看过楼主文章就来发链接了吧 文章的作者明白的非常彻底,h&length-1就是这个作用---低位不变,截掉高位! 你不能孤立的看待这个问题,h&length-1拿出来单独讲是片面而且没有意义的,要理解这个hash函数,必须要和2的幂还有 h ^= (h >>> 20) ^ (h >>> 12); return h ^ (h >>> 7) ^ (h >>> 4);结合起来。 将这这三者结合起来才能真正理解hashmap中的这个hash函数。 |
|
返回顶楼 | |
发表时间:2009-12-06
不过想想我们的“均摊”原理,就释然了
========= 怎么理解? |
|
返回顶楼 | |
发表时间:2009-12-07
分析的很细致,虽然也看过HashMap的代码,但是经常纠缠于细节,没能像楼主这样高屋建瓴
|
|
返回顶楼 | |