17 8 TreeSet集合和排序器

2021-10-01 07:03:54 字數 2893 閱讀 3990

元素有序,可以按照一定的規則進行排序,具體排序方式取決於構造方法

沒有帶索引的方法,所以不能使用普通for迴圈遍歷

由於是set集合,所以不包含重複元素的集合 

基本使用:

public class treesetdemo }}

執行結果:

使用步驟:

用treeset集合儲存自定義物件,無參構造方法使用的是自然排序對元素進行排序的 

自然排序,就是讓元素所屬的類實現comparable介面,重寫compareto(t o)方法 

重寫方法時,一定要注意排序規則必須按照要求的主要條件和次要條件來寫 

**演示:

學生類:

public class student implements comparable

public student(string name, int age)

public string getname()

public void setname(string name)

public int getage()

public void setage(int age)

@override

public string tostring() ';

}@override

public int hashcode()

@override

public int compareto(student o)

}

測試類:

public class treesetdemo_2 }}

執行結果:

實現步驟:

用treeset集合儲存自定義物件,帶參構造方法使用的是比較器排序對元素進行排序的 

比較器排序,就是讓集合構造方法接收comparator的實現類物件,重寫compare(t o1,t o2)方法 

重寫方法時,一定要注意排序規則必須按照要求的主要條件和次要條件來寫 

實現**:

public class treesetdemo_3 

});tee.add(new student("haha",22));

tee.add(new student("hehe",23));

tee.add(new student("lala",32));

tee.add(new student("meme",23));

tee.add(new student("huahua",3));

for(student s : tee)}}

執行結果:

案例需求:

用treeset集合儲存多個學生資訊(姓名,語文成績,數學成績),並遍歷該集合 

要求:按照總分從高到低出現 

實現**:

學生類:

public class student 

public student(string name, int chinese, int math)

public string getname()

public void setname(string name)

public int getchinese()

public void setchinese(int chinese)

public int getmath()

public void setmath(int math)

@override

public string tostring() ';

}//定義獲取總分方法

public int getsumscore()

}

測試類:

public class studentscoretest 

});te.add(new student("hong",50,90));

te.add(new student("hei",60,90));

te.add(new student("bai",70,80));

te.add(new student("lan",90,90));

for (student s : te) }}

執行結果:

編寫乙個程式,獲取10個1-20之間的隨機數,要求隨機數不能重複,並在控制台輸出 

實現**:

public class treesettest 

system.out.println(set);}}

執行結果:

treeSet集合中的自然排序和比較器排序

set介面類有三個子類 hashset,linkedlist和treeset treeset底層資料結構是二叉樹和雜湊表,所以能對元素進行排序,且元素唯一 treeset排序分為兩種 自然排序 使用空參構造 需要集合中的元素實現comparable介面,並且重寫介面中的compareto方法 比較器...

關於TreeSet和TreeMap排序問題及例項

a.字母 set treeset new treeset treeset.add sd treeset.add rt treeset.add vc system.out.println treeset rt,sd,vc 大小寫 set treeset new treeset treeset.add ...

java集合TreeSet的兩種排序方式

自然排序 要求新增進treeset中的元素所在的類implements comparable介面 重寫compareto object obj 在此方法內指明按照元素的哪個屬性進行排序 向treeset中新增元素即可。若不實現此介面,會報執行時異常 定製排序 建立乙個實現comparator介面的實...