如何覆盖 .equals 以比较基于 java 中的 2 个属性的自定义对象的 2 个数组列表
How to override .equals to compare 2 arraylists of custom object based on 2 attributes in java
我有一个名为 employee 的对象,它有 2 个属性 first name 和 last name 如果 firstname 和 lastname 都相同,则这 2 个 employee 是相同的。
现在我有 2 个员工名单,我想检查 list.equals(list)
之前我使用了 id 并且我覆盖了 .equals 如下
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (obj == null || obj.getClass() != this.getClass()) {
return false;
}
SMS sms = (SMS) obj;
return sms.getID() == this.getID();
}
@Override
public int hashCode() {
int hash = 7;
hash = 17 * hash + (this.getID() != null ? this.getID().hashCode() : 0);
return hash;
}
现在我想使用名字和姓氏的组合来比较而不是 id。
您可以像在 equals 方法中比较 id 一样比较 firstName 和 lastName。确保使用 equals 来比较 firstName 和 lastName 而不是“==”,假设它们是字符串。
此外,如果您要这样做,请确保相应调整 hashCode 方法。
我有一个名为 employee 的对象,它有 2 个属性 first name 和 last name 如果 firstname 和 lastname 都相同,则这 2 个 employee 是相同的。
现在我有 2 个员工名单,我想检查 list.equals(list)
之前我使用了 id 并且我覆盖了 .equals 如下
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (obj == null || obj.getClass() != this.getClass()) {
return false;
}
SMS sms = (SMS) obj;
return sms.getID() == this.getID();
}
@Override
public int hashCode() {
int hash = 7;
hash = 17 * hash + (this.getID() != null ? this.getID().hashCode() : 0);
return hash;
}
现在我想使用名字和姓氏的组合来比较而不是 id。
您可以像在 equals 方法中比较 id 一样比较 firstName 和 lastName。确保使用 equals 来比较 firstName 和 lastName 而不是“==”,假设它们是字符串。
此外,如果您要这样做,请确保相应调整 hashCode 方法。