我有兩套LinkedHashSet
對象,在這個對象內我有其他的對象有更多的LinkedHashSet
。LinkedHashSet等於方法
我的問題是:
是否equals
方法(默認)檢查是否所有的內部HashSets
是一樣的嗎?或者我必須覆蓋它?
我有兩套LinkedHashSet
對象,在這個對象內我有其他的對象有更多的LinkedHashSet
。LinkedHashSet等於方法
我的問題是:
是否equals
方法(默認)檢查是否所有的內部HashSets
是一樣的嗎?或者我必須覆蓋它?
默認情況下,它將確保HashSets的內容是equals()。 LinkedHashSet也是有序的,但這並不在hashCode或equals中使用,所以它們可能有不同的順序,仍然是equals = true。
簡而言之,順序對於HashSets的等於無關緊要,「equals」不等於「相同」。 「相同」通常意味着它是同一個對象。
Set.equals()
的合同是每套的每個成員都包含在另一箇中。每個contains
測試都依賴於集合中對象的equals()
方法。
該規範要求沒有Set
實現可以依賴作爲對象標識的equals()
的默認實現。 (就Set
規範而言,集合中的對象可以自由使用默認的Object.equals()
來測試相等性,但是如果有一組集合,(外部)集合中的對象本身就是Set
對象,因此主體相同的Set
合同有關equals()
。)
欲瞭解更多信息,請參閱該文檔爲Set.equals()
和Set.contains(Object)
。
除了Docs解釋這個,爲什麼不寫一個簡單的測試用例並找出答案呢? –