Java,从Object创建一个大于默认32位的Hash

问题描述 投票:0回答:1

假设您有一个如下所示的 POJO

class Person{
    String firstName;
    String lastName;
    String city;
    String country;
    .....
    .....
}

我们需要以 String 类型存储唯一的哈希值,与大小无关,并且碰撞概率非常小,因为条目可能是数十亿个对象。

默认的

Object.hashCode()
或类似的实现具有
32bit
Integer
的输出,因此具有很大的碰撞概率。

我们如何为这种情况创建一个(几乎)唯一的哈希?

创建一个 json 然后应用 SHA-1、SHA-256、MD5 等其他算法,将结果作为字节转换为字符串并保存它是否有意义?这看起来不太一致

java hash hash-collision
1个回答
0
投票

您不能覆盖 Object.hashCode() 的签名..该方法必须返回 int。如果您需要更复杂的密钥,请使用具有非常高熵的 UUID 并围绕它构建代码。

public class MyData() {
   private final String objectKey = UUID.randomUUID().toString();
}
© www.soinside.com 2019 - 2024. All rights reserved.