我怎样才能从对象中获取hash / md5?

时间:2011-12-05 01:39:31

标签: java hash md5

我有一个这样的课程

Class A{

  private String string1;
  private String string2;
  ..
  ..

  private String string19;

}

某些字符串可能为空。

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

我需要一种快速获取此哈希的方法。

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

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

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

您可以实现一个修改后的版本,您可以在其中为类中的所有String对象计算n。这样你就不会浪费空间和时间来创建连接的String来做同样的事情。在某些情况下,这可能没问题,但是有4-5百万个对象,你可能想避免那么多的流失。

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

答案 1 :(得分:0)

您可以连接所有字符串,然后对其进行选择。如果字符串为null,则可以使用“Null”或任何其他字符串 - 只要您保持一致,它就无关紧要。