黑馬程序員-第十五天( Set集合)

---------------------- ASP.Net+Unity開發.Net培訓、期待與您交流! ---------------------

一,Set集合
set集合中的元素是無序(存入和取出的順序不一定一致),元素是可以重複的。
set集合中的方法與collection的用法基本一樣。

二,常見子類集合:
HashSet:底層數據結構是哈希表。線程是非同步的。保證元素唯一性的原理:判斷元素的hashCode值是否相同,如果相同
還會繼續判斷元素的equals方法是否爲true.
TreeSet:可以對set集合中的元素進行排序。底層數據結構是二叉樹數據結構(當其中元素較多時,系統自動取折中值進行比較)
保證元素唯一性的依據是compareTo方法return 0;

注:排序時,當主要條件相同時,一定要判斷次要條件。

三,HashSet是如何保證元素唯一性的呢(保證唯一性的依據)?
是通過元素的兩個方法,hashCode()和equals(Object)來完成的,如果元素的hashCode值相同,纔會判斷
equals()是否爲true.如果元素的hashCode值不同,不會調用equals()方法

注意:對於判斷元素是否存在,以及刪除等操作,依賴的方法是元素的hashCode和equals方法

四。TreeSet排序
第一種方式:讓元素自身具備比較性,元素需要實現Comparable接口,覆蓋compateTo方法,稱爲元素自然順序,或默認順序。
第二種方式:當元素自身不具備比較性時,或者具備的比較性不是所需要的,這時就需要讓集合自身具備比較性。在
集合初始化時,就有了比較方式。定義了比較器,將比較器對象作爲參數傳遞給TreeSet集合的構造函數

注:當兩種比較方式都存在時,以比較器爲主.可以使用匿名內部類來完成傳遞。

定義比較器?
定義一個類,實現Comparator接口,覆蓋compare方法

判斷TreeSet集合元素的唯一是根據compareTo和compate方法retrun 0

---------------------- ASP.Net+Unity開發.Net培訓、期待與您交流! ---------------------

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章