我有一个类,它的对象将存储在hashmap,hashset中。
equals
方法。现在,如何基于这个参数构建hashcode方法?i、 e.如果我按照下面的代码进行计算,那么对于通过equals方法的相等性检查的两个对象,我将得到不同的hashcode。
例如,考虑以下类别:
public class Person {
private String fname = "";
private String lname = "";
private String profession = "";
// getters & setters
@Override
public boolean equals(Object obj) {
if (fname == null) {
if (other.fname != null)
return false;
} else if (!fname.equals(other.fname) && !other.fname.equals("*") && !fname.equals("*"))
return false;
return true;
// similar for other fields
}
@Override
public int hashCode() {
return Objects.hashCode(this.fname, this.lname , this.profession);
}
}
set.contains
当他们检查
object.equals
内部。所以我的
集合.contains
将返回false,即使我的对象通过了单独的wildchar相等方法的相等测试。