从 0-1 的字符串的 Java 哈希码

标签 java hashcode

所以我知道我可以简单地通过执行 .hashCode() 将字符串转换为哈希码,但是有没有一种方法可以转换(或者使用其他函数,如果有的话),而不是返回一个整数返回0 和 1 之间的双数?我正在考虑将数字除以可能的最大整数,但不确定是否有更好的方法。

*编辑(关于我为什么要这样做的更多信息):我正在做一个数学运算,我正在尝试对不同的对象进行分组以在它们的组中执行相同的数学运算但具有不同的参数进入功能。每个成员都有一个将他们“分组”的特征列表......所以我想将这些特征放入一个字符串中,然后对其进行哈希编码并从中找到他们的组值

最佳答案

您不能只除以 Integer.MAX_VALUE,因为那不会处理负数。你可以使用:

private static double INTEGER_RANGE = 1L << 32;
...
// First need to put it in the range [0, INTEGER_RANGE)
double doubleHash = ((long) text.hashCode() - Integer.MIN_VALUE) / INTEGER_RANGE;

据我所知,这应该没问题……但我不会对分发做出任何声明。可能有一种相当简单的方法可以使用 32 位在正确的范围内生成唯一的 double (每个唯一的哈希码),但如果您不太关心这个,这会更简单。

关于从 0-1 的字符串的 Java 哈希码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9890166/

相关文章:

java - Android 与 Blackberry 开发(可重用代码?)

Java 验证文件

php - 方法适用于 C++,但如何在 PHP 中重现相同的方法?

java - Grails:检查分离的对象是否在附加的集合中

java - 哈希码比较问题

java - 在 this.object 为 null 的 Java 中重写 equals 和 hashcode

java - 设置比较器不是通用的;它不能用参数参数化

java - Sonar 扫描仪引擎未启动

用户闲置 10 分钟后,Java 应用程序使屏幕显示无响应

java - 使用 Java ProcessBuilder 运行 Jar 会产生空输出