在下面的代码中,我想使用“term”属性来生成哈希码。如何使用此String属性生成哈希代码?
class Term {
String term;
@Override
public boolean equals(Object o) {
if (o instanceof Term) {
return this.term.equals(((Term)o).term);
}
return false;
}
@Override
public int hashCode() {
}
}
答案 0 :(得分:6)
只需使用String#hashCode()
方法进行null
检查即可。这就足够了:
@Override
public int hashCode() {
int prime = 31;
return prime + (term == null ? 0 : term.hashCode());
}
您还应修改equals()
方法,以便事先对null
进行this.term
检查。
答案 1 :(得分:2)
如果您使用JDK 1.7或更高版本,则可以使用Objects
。
@Override
public int hashCode() {
int prime = 31;
return prime + Objects.hashCode(this.stringAtrribute);
}
对于多个属性:
@Override
public int hashCode() {
int prime = 31;
return prime + Objects.hash(this.attributOne,this.atrributeTwo);
}
与前面的答案一样,equal
和hashcode
方法应该具有一致性。
答案 2 :(得分:1)
Eclipse可以为您编写此代码。只需从Source菜单中选择Generate hashCode和equals。