覆盖具有多个属性的hashCode()

时间:2015-06-08 14:41:35

标签: java

我正在尝试覆盖hashCode,我知道有一些方法可以实现它,但我想知道我是否可以这样做:

String x;
String y;

(Code)

@Override
public int hashCode(){
   return ((x !=null ? x.hashCode() : 7)+ (y!=null ? y.hashCode() : 7));
}

2 个答案:

答案 0 :(得分:4)

有更好的方法来组合多个对象的哈希码:

return Arrays.hashCode(new String[] {x, y});

return Objects.hash(x, y);

答案 1 :(得分:3)

根据参数确定的任何hashCode()的有效实现。您的实现不一定是良好的哈希函数,但它是一个有效的哈希函数。