这个天真等于,哈希码好吗?

时间:2013-03-15 15:53:02

标签: java equals hashcode

我有一个表示具有唯一Id属性的DB-Entries的类。 可以仅基于此属性

实施equals()hashcode()方法
  @Override public int hashCode()
  { return id;
  }

  @Override public boolean equals(Object obj)
  {
    if (this == obj)                  return true;
    if (obj == null)                  return false;
    if (getClass() != obj.getClass()) return false;
    Task other = (Task) obj;
    if (id != other.id)
      return false;
    return true;
  }

3 个答案:

答案 0 :(得分:2)

总的来说,是的。如果所有id都是小的连续整数,那么通过使用在可用的32位中更广泛地分布位的函数,可以从大集合中获得更好的性能。但这应该可以找到其他方法。

答案 1 :(得分:1)

我认为这段代码没有任何问题。但是,您可能希望思考一些问题:

  • 您是否可以拥有多个具有相同id的对象?
  • 该课程是否会被分类?

答案 2 :(得分:0)

你在评论中说这个课程是最终的,那么我会建议像Integer.equals中的equals design

public boolean equals(Object obj) {
    if (obj instanceof Integer) {
        return value == ((Integer)obj).intValue();
    }
    return false;
}