TreeSet:
用于對Set集合進(jìn)行元素的指定順序排序,排序需要依據(jù)元素自身具備的比較性。
如果元素不具備比較性,在運(yùn)行時(shí)會(huì)發(fā)生ClassCastException異常。
所以需要元素實(shí)現(xiàn)Comparable接口,強(qiáng)制讓元素具備比較性,復(fù)寫compareTo方法。
依據(jù)compareTo方法的返回值,確定元素在TreeSet數(shù)據(jù)結(jié)構(gòu)中的位置。
TreeSet方法保證元素唯一性的方式:就是參考比較方法的結(jié)果是否為0,如果return 0,視為兩個(gè)對象重復(fù),不存。
注意:在進(jìn)行比較時(shí),如果判斷元素不唯一,比如,同姓名,同年齡,才視為同一個(gè)人。
在判斷時(shí),需要分主要條件和次要條件,當(dāng)主要條件相同時(shí),再判斷次要條件,按照次要條件排序。
TreeSet集合排序有兩種方式,Comparable和Comparator區(qū)別:
1:讓元素自身具備比較性,需要元素對象實(shí)現(xiàn)Comparable接口,覆蓋compareTo方法。
2:讓集合自身具備比較性,需要定義一個(gè)實(shí)現(xiàn)了Comparator接口的比較器,并覆蓋compare方法,并將該類對象作為實(shí)際參數(shù)傳遞給
TreeSet集合的構(gòu)造函數(shù)。
第二種方式較為靈活。
本文版權(quán)歸黑馬程序員Java培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!
作者:黑馬程序員Java培訓(xùn)學(xué)院
首發(fā):http://java.itheima.com/