我知道這是問了很多,我不知道如果我很理解哈希碼,但它應該是地址,讓我怎麼解決我的具體的例子?如果我的理解是正確的,我有雙打在我的課,但我不能將它們添加到散列碼,因爲重載hashCode()方法在Java中使用雙重價值
possible loss of precision
found : double
required: int
return this.area();
這裏是我Shape
類:
abstract class Shape implements Comparable<Shape>
{
abstract double area();
public int compareTo(Shape sh){
return Double.compare(this.area(),sh.area());
}
public int hashCode() {
return this.area();
}
public boolean equals(Shape sh) {
if (sh instanceof Shape && this.area()==sh.area()) {
return true;
} else {
return false ;
}
}
}
是area()
的唯一的價值,我需要擔心hashCode()?
hashCode的行爲應該與equals的行爲相匹配,如果兩個對象被認爲相等,使用equals,那麼兩個對象的hashCode應該是相同的。如果您只使用形狀的區域來確定它是否相等,那麼您可以返回hashCode的區域。 – DanielGibbs
'Shape'是一個抽象類。你是否希望同一區域的兩個形狀相同,即使它們是不同的形狀? – khelwood