为什么hashCode方法会影响比较性能?

时间:2014-10-14 02:24:04

标签: java performance hashtable equals

我找到了以下代码here。有人认为“程序员应该意识到,为不相等的对象生成不同的整数结果可能会提高哈希表的性能。”另一个问题是为什么在第20,21和22行选择7和31?

1.  public class Test
2.  {
3.      private int num;
4.      private String data;
5.
6.      public boolean equals(Object obj)
7.      {
8.          if(this == obj)
9.              return true;
10.         if((obj == null) || (obj.getClass() != this.getClass()))
11.             return false;
12.         // object must be Test at this point
13.         Test test = (Test)obj;
14.         return num == test.num &&
15.         (data == test.data || (data != null && data.equals(test.data)));
16.     }
17.
18.     public int hashCode()
19.     {
20.         int hash = 7;
21.         hash = 31 * hash + num;
22.         hash = 31 * hash + (null == data ? 0 : data.hashCode());
23.         return hash;
24.     }
25.
26.     // other methods
27. }

0 个答案:

没有答案