ArrayList,HashSet判斷物件是否重複的原因
阿新 • • 發佈:2018-11-08
ArrayList,HashSet判斷物件是否重複的原因
a:ArrayList的contains方法原理:底層依賴於equals方法
ArrayList的contains方法會使用呼叫方法時,
傳入的元素的equals方法依次與集合中的舊元素所比較,
從而根據返回的布林值判斷是否有重複元素。
此時,當
判斷是否重複的依據是地址值,所以如果想根據內容判斷是否為重複元素,需要重寫元素的equals方法。
b:HashSet的add()方法和contains方法()底層都依賴 hashCode()方法與equals方法()
Set集合不能存放重複元素,其新增方法在新增時會判斷是否有重複元素,有重複不新增,沒重複則新增。
HashSet集合由於是無序的,其判斷唯一的依據是元素型別的hashCode與equals方法的返回結果。規則如下:
先判斷新元素與集合內已經有的舊元素的HashCode值
如果不同,說明是不同元素,新增到集合。
如果相同,再判斷equals比較結果。返回true則相同元素;返回false則不同元素,新增到集合。
所以,使用