您好,登錄后才能下訂單哦!
概述
TreeSet是SortedSet的實(shí)現(xiàn)類,可以確保集合元素處于排序狀態(tài)(根據(jù)元素實(shí)際值的大小進(jìn)行排序)
TreeSet采用紅黑樹的數(shù)據(jù)結(jié)構(gòu)來存儲集合元素,且支持兩種排序方法:自然排序和定制排序,默認(rèn)采用自然排序
常用方法:
Object first()????????????????????????????????????返回第一個(gè)元素
Object last()???????????????????????????????????? 返回最后一個(gè)元素
Object lower(Object e)????????????????????返回指定元素的前一個(gè)元素
Object higher(Object e)???????????????????返回指定元素的后一個(gè)元素
SortedSet subSet(Object fromElement Object toElement):? ? ? ? ? ? [fromElement,toElement)
SortedSet headSet(Object toElement):????????????????????????????????????????? ? [????????????????????,toElement)
SortedSet tailSet(Object fromElement):???????????????????????????????????????????[fromElement,????????????? ? )
Comparator comparator():如果TreeSet采用了定制排序,則返回定制排序所使用的Comparator.如果是采用自然排序,就返回null
自然排序:TreeSet調(diào)用集合元素的compareTo(Object obj)方法來比較元素之間的大小關(guān)系,然后將集合元素按升序排列
Java提供了一個(gè)Comparable接口,該接口定義了一個(gè)compareTo(Object obj)方法,該方法返回一個(gè)整數(shù)值,實(shí)現(xiàn)該接口的類必須實(shí)現(xiàn)該方法,實(shí)現(xiàn)了該接口的類的對象就可以比較大小。
TreeSet中的元素應(yīng)該是同一個(gè)類的對象
當(dāng)把一個(gè)對象加入TreeSet集合時(shí),TreeSet調(diào)用該對象的compareTo(Object obj)方法與容器中的其他對象比較大小,然后根據(jù)紅黑樹結(jié)構(gòu)找到它的存儲位置。
如果兩個(gè)對象通過compareTo(Object obj)比較相等,新對象將無法添加到TreeSet集合中。
當(dāng)需要把一個(gè)對象放入TreeSet中,重寫該對象對應(yīng)類的equals()方法時(shí),應(yīng)保證該方法與compareTo(Object obj)方法有一致的結(jié)果。其規(guī)則是:如果兩個(gè)對象通過equals()方法比較返回true時(shí),這兩個(gè)對象通過compareTo(Object obj)比較時(shí)應(yīng)返回0
注:把一個(gè)對象添加到TreeSet時(shí),該對象的類必須實(shí)現(xiàn)Comparable接口
定制排序:通過Comparator接口的幫助,實(shí)現(xiàn)定制排序。該接口里包含了一個(gè)int compare(T o1,T o2)方法,用于比較o1和o2的大小
在創(chuàng)建TreeSet集合對象時(shí),提供一個(gè)Comparator對象與TreeSet集合關(guān)聯(lián),由該Comparator對象負(fù)責(zé)集合元素的排序邏輯
TreeSet ts = new TreeSet((o1,o2) ->?
{
????M m1 = (M)o1;
????M m2 = (M)o2;
????return m1.age > m2.age ? -1 : m1.age < m2.age ? 1:0
})
?注:M是一個(gè)自定義類,關(guān)鍵變量是age
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。