1. 程式人生 > >00083_判斷集合元素唯一的原理

00083_判斷集合元素唯一的原理

規則 list ash 新元素 相同 結果 code array contain

1、ArrayList的contains方法判斷元素是否重復原理

  ArrayList的contains方法會使用調用方法時,傳入的元素的equals方法依次與集合中的舊元素所比較,從而根據返回的布爾值判斷是否有重復元素。此時,當ArrayList存放自定義類型時,由於自定義類型在未重寫equals方法前,判斷是否重復的依據是地址值,所以如果想根據內容判斷是否為重復元素,需要重寫元素的equals方法。

2、HashSet的add/contains等方法判斷元素是否重復原理

  (1)HashSet的add/contains等方法判斷元素是否重復原理Set集合不能存放重復元素,其添加方法在添加時會判斷是否有重復元素,有重復不添加,沒重復則添加;

  (2)HashSet集合由於是無序的,其判斷唯一的依據是元素類型的hashCode與equals方法的返回結果。規則如下:

  先判斷新元素與集合內已經有的舊元素的HashCode值;

  如果不同,說明是不同元素,添加到集合;

  如果相同,再判斷equals比較結果。返回true則相同元素;返回false則不同元素,添加到集合。

  (3)所以,使用HashSet存儲自定義類型,如果沒有重寫該類的hashCode與equals方法,則判斷重復時,使用的是地址值,如果想通過內容比較元素是否相同,需要重寫該元素類的hashcode與equals方法。

00083_判斷集合元素唯一的原理