int x = 10; int y = (x.hashcode() & 0xfffffff);
上面的代码怎么总是让y
positive?谢谢!
最佳答案
x.hashcode() & 0xfffffff
将关闭符号位。此处未使用 Math.abs
,因为如果 x.hashCode
等于 Integer.MIN_VALUE
,它将返回负数,这将使 哈希表的
数组抛出一个 ArrayOutOfBoundException
,这不是您想要的。
来自@JonSkeet 的评论:它不仅会关闭符号位,还会清除接下来的三位。
但是对于散列码,我们一直在处理冲突,所以它被认为是好的。
关于java - 如何使哈希码(整数值)为正,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33219638/