如何从对象中获得哈希/md5



我有一个这样的类

Class A{
  private String string1;
  private String string2;
  ..
  ..
  private String string19;
}

部分字符串可能为空。

我想获得一个哈希/标识符(字符串或数字)为该类的实例。我可以使用hashCode,但我不知道我是否可以得到一些碰撞,我有很多这个类的实例(大约4-5百万)。

我需要一个快速的方法来得到这个哈希值。

谢谢你的帮助

您可以编写一个自定义的hashCode方法,该方法在String类中使用略微改变版本的hashCode算法。在Oracle文档中,字符串hashCode的计算方法如下:

 s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]

你可以实现一个修改后的版本,在你的类中计算所有String对象的n。这样,您就不会浪费空间和时间来创建一个连接字符串来做同样的事情。在某些情况下,这可能是好的,但对于4- 500万个对象,您可能希望避免这么多的混乱。

来源:http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html hashCode % 28% 29日

您可以将所有字符串连接起来,然后对其执行您选择的散列。如果字符串为空,可以使用" null "或任何其他字符串——只要保持一致,这真的无关紧要。

最新更新