如何在 Java 中使用范围将字符串哈希为整数



>假设我有 n 个字符串,现在我想使用一个函数将每个字符串映射到 0 到 n-1 范围内的整数,这样每当我调用一个函数并传递字符串和 n 时,它都会在旅途中给我相同且唯一的映射。因此,假设我有 4 个字符串"str1"、"str2"、"str3"、"str4",那么映射将从 0-3 开始并且是唯一的。

我尝试做类似的事情:str.hashCode() % n,这给了我相同的映射,但不在 0 到 n-1 的范围内。我在PHP中找到了一些与此类似的内容-

https://madcoda.com/2014/04/how-to-hash-a-string-to-integer-with-a-range-php/

记录

在 Java 中,将随机字符串散列为整数:

Math.abs(str.hashCode() % 7)

结果将为 0(含 0 到包含 6(。

注意:

如果输入字符串确实是随机的并且长度相同等(例如...输入是一大堆 UUID(,那么这里的输出将是随机平衡的。

如果输入是 - 比如说 - 许多人名,则输出不太可能是随机平衡的。

注意:

OP在标题中从字面上问的问题在这里得到了回答。

事实上,OP 询问的内容(在正文中(与哈希完全无关。(那只是一个查找表,一个正则表达式等。

相关内容

  • 没有找到相关文章

最新更新