我的任务是:
在Rational Numbers类中适当地重写equals()和hashCode()方法.
它进一步扩展了这一点.我的问题是,当你覆盖equals方法时,你是否更改了传入的参数?如果它检查逻辑等价,那么我已经完成了以下操作:
public boolean equals(Rational rhs){
if(this.num == rhs.num && this.denom == rhs.denom){
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我不确定这是否是覆盖方法时的方法.如果是,那么当你重写hashcode方法时,选择一段好的代码来分配哈希码只是一个简单的工作吗?
另外,这是我创建的哈希码.这是沿着正确的方向吗?
@Override
public int hashCode(){
int hc = 17;
hc = 37 * hc + ((num == 0 && denom == 0) ? 0 : num);
return 37 * hc + denom;
//boolean b = cond ? boolExpr1 : boolExpr2;
//if cond true then b=boolExpr1 else b=boolExpr2
}
Run Code Online (Sandbox Code Playgroud)