如何生成String的长哈希?

Rid*_*del 9 java string hash long-integer

我有一个java applciation,我想在其中long为字符串生成id(为了在neo4j中存储这些字符串).为了避免数据重复,我想为存储在long整数中的每个字符串生成一个id,对于每个字符串应该是唯一的.我怎样才能做到这一点 ?

Ran*_*Ran 13

这段代码将计算相当不错的哈希:

String s = "some string";
long hash = UUID.nameUUIDFromBytes(s.getBytes()).getMostSignificantBits();
Run Code Online (Sandbox Code Playgroud)


Dan*_*iel 7

你为什么不看看hashcode()String 的功能,只是采用它来代替长值?

顺便说一句.如果有办法为每个String创建一个唯一的ID,那么你会找到一个压缩算法,它能够将每个String打包成8个字节(根据定义不可能).


ami*_*mit 5

long有64位。String长度为9的A 有72位。从鸽子洞的原理 -你不能得到9个字符长的字符串到的唯一哈希long

如果你仍然想一个long哈希:你可以只取两个标准的哈希函数[不同!] String->inthash1()hash2()与计算:hash(s) = 2^32* hash1(s) + hash2(s)