假设您有一个如下所示的 POJO
class Person{
String firstName;
String lastName;
String city;
String country;
.....
.....
}
我们需要以 String 类型存储唯一的哈希值,与大小无关,并且碰撞概率非常小,因为条目可能是数十亿个对象。
默认的
Object.hashCode()
或类似的实现具有 32bit
Integer
的输出,因此具有很大的碰撞概率。
我们如何为这种情况创建一个(几乎)唯一的哈希?
创建一个 json 然后应用 SHA-1、SHA-256、MD5 等其他算法,将结果作为字节转换为字符串并保存它是否有意义?这看起来不太一致
您不能覆盖 Object.hashCode() 的签名..该方法必须返回 int。如果您需要更复杂的密钥,请使用具有非常高熵的 UUID 并围绕它构建代码。
public class MyData() {
private final String objectKey = UUID.randomUUID().toString();
}