ArrayList 在 contains() 方法中對物件的求值
ArrayList 是 Java 中高度利用的資料結構。它的關鍵方法之一 contains() 提供了在清單中搜尋物件的能力。一個常見的問題是關於此方法如何確定兩個物件是否相等。
equals() 方法的作用
ArrayList 合併了 List 接口,該接口定義了包含() 方法。根據 List 介面規範, contains() 方法呼叫 equals() 方法來比較物件是否相等。
預設equals() 行為
預設情況下, equals() 方法比較物件的參考相等性,這表示僅當物件引用相同物件實例時才被視為相等。此行為不適合大多數自訂類,其中相等性應基於物件的屬性。
重寫自訂類別的 equals()
實作語義相等您的自訂類,您需要重寫 equals() 方法。在您的範例中,您提供了 equals() 的實現,該實現根據 Thing 類別的 value 屬性進行比較。
範例評估
使用您提供的實作equals(),讓我們評估contains() 方法:
ArrayList<Thing> basket = new ArrayList<>(); Thing thing = new Thing(100); basket.add(thing); Thing another = new Thing(100); basket.contains(another); // true
contains() 方法傳回true,因為重寫的equals() 方法比較thing 和another 的值屬性並確定它們相等。
因此,為了使 contains() 方法能夠根據對象的屬性正確識別對象,必須重寫equals() 方法並提供有意義的比較實作。
以上是ArrayList 的 `contains()` 方法如何評估物件相等性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!