Java基礎必學TreeSet集合
一、特點
1.元素有序,這里的順序不是指的存儲和取出的順序,而是按照一定規(guī)則進行排序,具體排序方法要看構造方法
TreeSet():無參構造,根據(jù)元素的自然順序排序也就是從小到大的排序方式進行排序
TreeSet
(Comparator comparator):帶參構造,根據(jù)指定的比較器進行排序
2.沒有帶索引的方法,所以不能使用for循環(huán),可以使用增強for循環(huán)或者迭代器
3.由于是Set集合,所以是不包含重復元素的集合
使用無參構造進行存儲數(shù)據(jù)并遍歷練習:
public class TreeSetDemo { ? public static void main(String[] args) { ? ? ? //創(chuàng)建對象 ? ? ? TreeSet<Integer>ts=new TreeSet<Integer>();//注意:泛型中引用類型要用它的包裝類類型 ? ? ? //添加數(shù)據(jù) ? ? ? ts.add(10);//自動裝箱實現(xiàn) ? ? ? ts.add(8); ? ? ? ts.add(7); ? ? ? ts.add(5); ? ? ? ts.add(10);//由于是Set集合不包含重復元素,所以該元素不顯示 ? ? ? //遍歷方法一 增強for ? ? ? for (Integer i:ts){ ? ? ? ? ? System.out.println(i); ? ? ? } ? ? ? System.out.println("--------------------------------"); ? ? ? //遍歷方法二 迭代器 ? ? ? Iterator<Integer>it =ts.iterator(); ? ? ? while(it.hasNext()){ ? ? ? ? ? System.out.println(it.next()); ? ? ? } ? } }
二,補充
TreeSet集合實現(xiàn)了SortedSet接口, 可以對集合中元素進行自然排序, 要求集合中的元素必須是可比較的。
package com.wkcto.chapter05.set; import java.util.Comparator; import java.util.TreeSet; /** * TreeSet集合 * 可以對元素進行自然排序, 要求元素必須是可比較的 * 1)創(chuàng)建TreeSet集合時,通過構造方法指定Comparator比較器 * 2)如果沒有指定Comparator比較器, 要求元素的類必須實現(xiàn)Comparable接口 * @author 蛙課網(wǎng) * */ public class Test03 { public static void main(String[] args) { //1) 創(chuàng)建TreeSet集合,存儲Person對象, 在構造方法中指定Comparator比較器,按姓名升序排序 TreeSet<Person> treeSet = new TreeSet<>(new Comparator<Person>() { //在匿名內部類中重寫接口的抽象方法 @Override public int compare(Person o1, Person o2) { //指定一個比較規(guī)則 return o1.name.compareTo(o2.name); //姓名升序 } }); //2)添加元素 treeSet.add(new Person("lisi", 18)); treeSet.add(new Person("feifei", 28)); treeSet.add(new Person("yong", 35)); treeSet.add(new Person("bin", 36)); treeSet.add(new Person("zhang", 33)); //3)直接打印 System.out.println( treeSet ); //4) 根據(jù)已有TreeSet創(chuàng)建新的TreeSet集合 TreeSet<Person> treeSet22 = new TreeSet<>(treeSet); System.out.println( treeSet22 ); //5) 使用TreeSet的無參構造, 沒有指定Comparator比較器, 要求Person類實現(xiàn)Comparable接口 TreeSet<Person> treeSet33 = new TreeSet<>(); treeSet33.addAll(treeSet); System.out.println( treeSet33); } }
TreeSet
集合底層是TreeMap,向TreeSet集合添加元素,實際上是把該元素作為鍵添加到了底層TreeMap中,TreeSet集合實際上就是底層TreeMap的鍵的集合。
package com.wkcto.chapter05.set; import java.util.Comparator; import java.util.TreeSet; /** * 注意: * 在TreeSet集合中, 是根據(jù)Comparator/Comparable的比較結果是否為0來判斷是否為同一個對象 * 如果Comparator的compare()方法/Comparable的compareTo()方法的返回值為0 就認為是同一個對象 * @author 蛙課網(wǎng) * */ public class Test04 { public static void main(String[] args) { //創(chuàng)建TreeSet集合,存儲Person對象, 通過構造方法指定Comparator比較器,按年齡降序排序 TreeSet<Person> treeSet = new TreeSet<>(new Comparator<Person>() { @Override public int compare(Person o1, Person o2) { return o2.age - o1.age; } }); //當前treeSet是根據(jù)年齡比較Person大小的, 在添加Person對象時, 如果年齡相同就認為是同一個對象 treeSet.add(new Person("lisi", 18)); treeSet.add(new Person("feifei", 18)); treeSet.add(new Person("zhang", 18)); treeSet.add(new Person("yong", 18)); System.out.println( treeSet.size() ); // 1 System.out.println( treeSet ); System.out.println( treeSet.contains( new Person("wang", 18))); //true } }
到此這篇關于Java必學基礎TreeSet集合的文章就介紹到這了,更多相關Java TreeSet集合內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
spring boot 本地圖片不能加載(圖片路徑)的問題及解決方法
這篇文章主要介紹了spring boot 本地圖片不能加載(圖片路徑)的問題,解決的辦法其實很簡單,只要寫一個配置文件,也就是圖片位置的轉化器,原理是虛擬一個在服務器上的文件夾,與本地圖片的位置進行匹配。需要的朋友可以參考下2018-04-04