使用string属性覆盖hashCode函数

时间:2013-10-27 19:46:20

标签: java string hashcode

在下面的代码中,我想使用“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() {
    }
}

3 个答案:

答案 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);    
}

与前面的答案一样,equalhashcode方法应该具有一致性。

答案 2 :(得分:1)

Eclipse可以为您编写此代码。只需从Source菜单中选择Generate hashCode和equals。