如何比较两个java对象
我有两个从同一类实例化的java对象。
MyClass myClass1 = new MyClass();MyClass myClass2 = new MyClass();
如果我将它们的两个属性都设置为完全相同的值,然后验证它们是否相同
if(myClass1 == myClass2){ // objects match
...
}
if(myClass1.equals(myClass2)){
// objects match
...
}
但是,这些方法都不返回真实值。我已经检查了每个属性,并且它们匹配。
如何比较这两个对象以验证它们是否相同?
回答:
你需要提供自己的equals()in
实现MyClass
。
@Overridepublic boolean equals(Object other) {
if (!(other instanceof MyClass)) {
return false;
}
MyClass that = (MyClass) other;
// Custom equality check here.
return this.field1.equals(that.field1)
&& this.field2.equals(that.field2);
}
hashCode()
如果哈希表中有可能使用你的对象,则还应该重写。一个合理的实施将是该对象的字段的哈希码喜欢的东西结合起来:
@Overridepublic int hashCode() {
int hashCode = 1;
hashCode = hashCode * 37 + this.field1.hashCode();
hashCode = hashCode * 37 + this.field2.hashCode();
return hashCode;
}
以上是 如何比较两个java对象 的全部内容, 来源链接: utcz.com/qa/411443.html