是这样的,我正在使用一个第三方的 ORM 框架,它的实体只支持以Long为主键,而我的业务逻辑大部分则需要以String为主键。我想到的一个方案是写一个映射函数来将业务主键的String映射成Long来提供给框架使用。直接使用String的hashCode()方法似乎比较简单,但是感觉碰撞的概率应该很大。有没有其它好的实现方式呢?
1
ninion Oct 25, 2019 CRC64 ?
|
2
jwk345 Oct 25, 2019 via iPhone
再加个字段
|
3
MrZhaoyx Oct 25, 2019 |
4
p2pCoder Oct 25, 2019 MurmurHash
|
6
YUyu101 Oct 26, 2019
想不碰撞就不能压缩,那你的 string 长度不能太长,不然不可能不碰撞吧。
或者你 hash 再加个时间戳,一次性映射并存储,以后直接读 long,不要再转换了。 |
7
msg7086 Oct 26, 2019
不碰撞就只能完全映射,string 到 long 要不碰撞的话只能 8 字节以内,否则必然总有一天会碰。
|
8
love Oct 26, 2019 via Android
如果字符串只存明文的话可以保存长很多
|
10
mutalisk Oct 27, 2019
cityhash
|
11
mutalisk Oct 27, 2019
楼上老哥说的 murmurhash 也可以
|