Java——Set集合(介面)(二)___TreeSet用法
阿新 • • 發佈:2018-12-11
Set(介面)集合: TreeSet類(底層是二叉樹),能保證有序,用來對元素進行排序,能保證元素的唯一 使用方式: 1.自然順序:TreeSet類的add()方法中會把存入的物件提升為Comparable型別 呼叫物件的compareTo()方法和集合中的物件比較 根據compareTo()方法返回的結果進行儲存 2.比較器順序:建立TreeSet的時候可以制定一個Comparator 如果傳入Comparator的子類物件,那麼TreeSet就會按照比較器中的順序排序 add()方法內部會自動呼叫Comparator介面中compare()方法排序 呼叫的物件是compare方法的第一個引數,集合中的物件是compare方法的第二個引數 3.TreeSet建構函式什麼都不傳,預設按照類中Comparable的順序 TreeSet如果傳入Comparator,就優先按照Comparator
package pra_12; import java.util.Comparator; import java.util.TreeSet; public class J_24 { public static void main(String[] args) { //1.TreeSet儲存Integer型別得元素並進行遍歷(按照數值大小比較) TreeSet<Integer> ts=new TreeSet<>(); ts.add(1); ts.add(1); ts.add(2); ts.add(2); ts.add(3); System.out.println(ts); //[1, 2, 3] //2.儲存自定義物件 //需要People5實現Comparable介面,並重寫comparaTo方法 //當comparaTo方法返回0的時候集合中只有一個元素 //當返回正數的時候集合會怎麼存怎麼取 //當返回是負數的時候集合會倒序儲存 TreeSet<People5> ts2=new TreeSet<>(); ts2.add(new People5("aa",11)); ts2.add(new People5("bb",22)); ts2.add(new People5("bb",22)); ts2.add(new People5("aa",11)); ts2.add(new People5("vv",33)); ts2.add(new People5("ff",44)); ts2.add(new People5("gg",44)); System.out.println(ts2); //3.比較器排序.將字串按照長度排序 /* TreeSet(Comparator<? super E> comparator) 構造一個新的空 TreeSet,它根據指定比較器進行排序。 */ TreeSet<String> ts3=new TreeSet<>(new Comp()); //Comparator com=new Comp(); ts3.add("aa"); ts3.add("b"); ts3.add("aaa"); ts3.add("aaaaa"); System.out.println(ts3); } } class People5 implements Comparable<People5>{ private String name; private int age; public People5() { super(); } public People5(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String toString() { return "People [name=" + name + ", age=" + age + "]"; } //重寫的方法在這!!! @Override public int compareTo(People5 o) { int number=this.age-o.age; //按照年齡排序 return number==0?this.name.compareTo(o.name):number; } } //實現類的繼承在這!!! class Comp implements Comparator<String>{ @Override public int compare(String o1, String o2) { //按照字串的長度比較 int num=o1.length()-o2.length(); return num==0?o1.compareTo(o2):num; } }