>假设我有 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 询问的内容(在正文中(与哈希完全无关。(那只是一个查找表,一个正则表达式等。