如何比较两个java对象

我有两个从同一类实例化的java对象。

MyClass myClass1 = new MyClass();

MyClass myClass2 = new MyClass();

如果我将它们的两个属性都设置为完全相同的值,然后验证它们是否相同

if(myClass1 == myClass2){

// objects match

...

}

if(myClass1.equals(myClass2)){

// objects match

...

}

但是,这些方法都不返回真实值。我已经检查了每个属性,并且它们匹配。

如何比较这两个对象以验证它们是否相同?

回答:

你需要提供自己的equals()in实现MyClass

@Override

public 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()如果哈希表中有可能使用你的对象,则还应该重写。一个合理的实施将是该对象的字段的哈希码喜欢的东西结合起来:

@Override

public 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

回到顶部