ArrayList 中的物件比較: contains() 如何決定物件相等性
將物件加入ArrayList 時,通常會假設包含( ) 方法將僅根據物件的欄位值來評估物件。然而,實際過程比這更微妙。
在 Java 中,ArrayList 實作的 List 介面定義了 contains() 方法的簽章。根據文檔,該方法「當且僅當此列表包含指定元素時返回 true」。但是列表如何判斷兩個物件是否相同呢?
equals() 的作用
答案就在 equals() 方法中,該方法定義在物件類別中。該方法負責比較兩個物件並確定它們是否表示相同的值。當呼叫 contains() 方法時,它會在內部呼叫 equals() 方法來確定指定物件是否與清單中的任何物件相符。
自訂物件的自訂 equals()
在您的特定範例中,您在 Thing 類別中定義了自訂 equals() 方法。這是必要的,因為預設情況下,Object 提供的 equals() 方法比較物件引用,而不是欄位值。您的實作正確地比較了 value 字段,以確定兩個 Thing 物件是否相等。
假設 Thing 類別的實作如圖所示,則 contains() 方法在搜尋相同的物件時確實會傳回 true到先前新增至購物籃清單中的一項。這是因為當兩個物件的 value 欄位符合時 equals() 方法傳回 true。
結論
綜上所述,ArrayList 的 contains() 方法利用了equals() 方法判斷兩個物件是否相等。對於自訂物件類,您可能需要重寫 equals() 方法,以根據定義物件相等性的特定屬性提供您自己的實作。
以上是ArrayList的contains()方法如何判斷物件相等?的詳細內容。更多資訊請關注PHP中文網其他相關文章!