java – 这是hashCode()的一个很好的实现吗?

我有一个将在HashSet中使用的类.它只包含两个成员,两者都是相同类型的接口.这就是它的样子:

class MyClass{
    MyInterface a;
    MyInterface b;

    public int hashCode(){
         return a.hashCode() + b.hashCode();
    }

    public boolean equals(Object obj){
         if(!(obj instanceof MyClass)
              return false;
         MyClass other (MyClass) obj;
         return (this.a == other.a && this.b == other.b) || (this.a == other.b && this.b == other.a);
    }
}

如您所见,如果MyClass的两个实例包含相同的两个MyInterface实例,则它们是“相等的”.

现在,我在想,对于hashCode(),我可以添加其成员的默认哈希码.这够好吗?如果没有,对于这种情况,hashCode()的正确实现是什么?

解决方法:

是的,这很好.它相当于为两元素集实现Set.hashCode().

上一篇:IntelliJ IDEA 无法导入HttpServlet包


下一篇:黑白图像处理的Ps插件