繁体   English   中英

生成更大的HashCode JAVA

[英]Generate Bigger HashCode JAVA

由于已知事实,Java会生成大约40亿个唯一的Hashcode。

我正在使用某些字符串的哈希码(例如Fname + Lname + DOB + DATE),它成为数据库的主键

在@PrePersist中,我使用Hashcode进行了设置,这有助于我为新用户生成Hashcode。 (必须是唯一的)。

现在我已经没有代码了。 对我来说,可能的替代方法是使用SHA-2,MD5等。

如何增加哈希码的大小,又如何避免发生较大的冲突。

如果您的目标是为数据库创建唯一标识符,则建议使用UUID

UUID版本3 (使用名称空间)将适合您的情况。

一些数据库具有对UUID的本地支持,例如PostgreSQL

我认为您对使用int Object.hashCode()感到困惑,您可以重写它并返回一个int并使用安全的哈希函数。 那是两件事。 Object.hashCode不能返回唯一的整数(返回1是有效的实现)。 因此,使用String.hashCode()进行对象标识并不是一个好主意,因为它可能会发生冲突。 它旨在与HashTables一起使用; 这意味着它针对性能进行了优化,而不是为了避免冲突。

如果您想要某种内容哈希,则确实可以使用sha1,sha2,sha3或md5。 如果不是,请使用SecureRandom或UUID随机生成一些内容。 所有这些都极有可能使您发生碰撞(当然不是完全为0)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM