java - 如何使哈希码(整数值)为正

标签 java hash bitwise-operators

int x = 10; int y = (x.hashcode() & 0xfffffff);

上面的代码怎么总是让ypositive?谢谢!

最佳答案

x.hashcode() & 0xfffffff 将关闭符号位。此处未使用 Math.abs,因为如果 x.hashCode 等于 Integer.MIN_VALUE,它将返回负数,这将使 哈希表的 数组抛出一个 ArrayOutOfBoundException,这不是您想要的。

来自@JonSkeet 的评论:它不仅会关闭符号位,还会清除接下来的三位

但是对于散列码,我们一直在处理冲突,所以它被认为是好的。

关于java - 如何使哈希码(整数值)为正,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33219638/

相关文章:

java - 为什么我无法捕获 TesseractException?

c - 如何在C中检查16位地址中的每一位

python - 类型错误 : bad operand type for unary ~: 'bytes' : complement of a string of bytes

java - 如何在 Java 中为 XML 文件创建校验和

java - 我正在创建一个简单的 JDBC Java 应用程序,获取类未找到异常

java - 如何从适配器打开新 Activity ?

java - 什么是 Java 8 中字符串键的替代哈希?

python - 如何在 Python 中序列化哈希对象

arrays - 按散列中的数组元素分组,计算计数

java - 二元或运算符