簡體   English   中英

正確的顏色哈希碼實現

[英]Correct hashcode implementation for Colors

我有一堂課:

public class Color {
    private double red;
    private double green;
    private double blue;
}

用這樣的equals方法:

public boolean equals(Object o) {
    if (this == o) {
        return true;
    }
    if (o == null || getClass() != o.getClass()) {
        return false;
    }

    Color color = (Color) o;

    if (Math.abs(color.red - red) < COLOR_TRESHOLD) {
        return false;
    }
    if (Math.abs(color.green - green) < COLOR_TRESHOLD) {
        return false;
    }
    return Math.abs(color.blue - blue) < COLOR_TRESHOLD;
}

因此,如您所見,我希望相似的顏色相等。 我的問題是如何針對這種情況創建正確的哈希碼實現。 當然我可以返回恆定值。 但這似乎不是一個好主意。

您應該輸入:

if (o == null || getClass() != o.getClass()) {
    return false;
}

作為第一個測試。 有時,如果傳遞了null而不是首先檢查的內容,則可能會得到null指針異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM