2022-12-15
treeset 方法 student ts 集合
TreeSet集合
HashSet集合存儲(chǔ)的元素是無序的和不可重復(fù)的,為了對(duì)集合中的元素進(jìn)行排序,Set接口提供了另一個(gè)可以對(duì)HashSet集合中元素進(jìn)行排序的類——TreeSet。
接下來通過一個(gè)案例演示TreeSet集合的用法。
|
Java |
上述代碼中,從打印結(jié)果可以看出,添加的元素已經(jīng)自動(dòng)排序,并且重復(fù)存入的整數(shù)1和3只添加了一次。
TreeSet集合之所以可以對(duì)添加的元素進(jìn)行排序,是因?yàn)樵氐念惪梢詫?shí)現(xiàn)Comparable接口 (基本類型的包裝類,String類都實(shí)現(xiàn)了該接口),Comparable接口強(qiáng)行對(duì)實(shí)現(xiàn)它的每個(gè)類的對(duì)象進(jìn)行整體排序,這種排序被稱為類的自然排序。Comparable接口的compareTo()方法被稱為自然比較方法。如果將自定義的Student對(duì)象存入TreeSet,TreeSet將不會(huì)對(duì)添加的元素進(jìn)行排序,Student對(duì)象必須實(shí)現(xiàn)Comparable接口并重寫compareTo()方法實(shí)現(xiàn)對(duì)象元素的順序存取。
接下來通過一個(gè)案例講解使用compareTo()方法實(shí)現(xiàn)對(duì)象元素的順序存取。
|
Java |
從運(yùn)行結(jié)果可以看出,TreeSet按照存入元素的順序倒過來存入了集合中,因?yàn)镾tudent類實(shí)現(xiàn)了Comparable接口,并重寫了compareTo()方法,當(dāng)compareTo()方法返回0的時(shí)候集合中只有一個(gè)元素;當(dāng)compareTo()方法返回正數(shù)的時(shí)候集合會(huì)正常存取;當(dāng)compareTo()方法返回負(fù)數(shù)的時(shí)候集合會(huì)倒序存儲(chǔ)。
上面介紹了TreeSet集合的自然排序,它還有另一種實(shí)現(xiàn)排序的方式,即實(shí)現(xiàn)Comparator接口,重寫compare()方法和equals()方法,但是由于所有的類默認(rèn)繼承Object,而Object中有equals()方法,所以自定義比較器類時(shí),不用重寫equals()方法,只需要重寫compare()方法,這種排序被稱為比較器排序。
接下來通過一個(gè)案例學(xué)習(xí)將自定義的Student對(duì)象通過比較器的方式存入TreeSet集合。
|
Java |
開班時(shí)間:2021-04-12(深圳)
開班盛況開班時(shí)間:2021-05-17(北京)
開班盛況開班時(shí)間:2021-03-22(杭州)
開班盛況開班時(shí)間:2021-04-26(北京)
開班盛況開班時(shí)間:2021-05-10(北京)
開班盛況開班時(shí)間:2021-02-22(北京)
開班盛況開班時(shí)間:2021-07-12(北京)
預(yù)約報(bào)名開班時(shí)間:2020-09-21(上海)
開班盛況開班時(shí)間:2021-07-12(北京)
預(yù)約報(bào)名開班時(shí)間:2019-07-22(北京)
開班盛況
Copyright 2011-2023 北京千鋒互聯(lián)科技有限公司 .All Right
京ICP備12003911號(hào)-5
京公網(wǎng)安備 11010802035720號(hào)