TreeSet與TreeMap筆記

TreeSet

注意:TreeSet在添加元素時進(jìn)行排序,數(shù)據(jù)更改不會影響原來的順序。使用過程中最好不要改變其元素內(nèi)容,可能會導(dǎo)致內(nèi)容重復(fù)。為避免重復(fù)可以將元素類內(nèi)部屬性定義為final常量,就不能修改了。

  1. 數(shù)據(jù)元素可以排序且不可重復(fù)
    因?yàn)門reeSet也是實(shí)現(xiàn)了Set接口的實(shí)體類,而Set接口中元素不可重復(fù)。
  2. HashSet與TreeSet對比
    HashSet中的元素必須重寫hashcode和equals方法,用來去重,而TreeSet因?yàn)樵乜梢耘判?,即定義了排序規(guī)則就可以通過比較,結(jié)果為0則表示重復(fù)了。
  3. 對于兩種不同的排序定義實(shí)現(xiàn)選擇不同的構(gòu)造器
  • Comparable選擇new TreeSet();
  • Comparator選擇new TreeSet(Comparator<? super E> comparator);

TreeSet應(yīng)用示例
很簡單,繼續(xù)使用上面的Person類,因?yàn)樵诖娣艜r就已經(jīng)排序了,直接輸出即可查看排序后的內(nèi)容

  1. Comparator接口定義的類的排序
public class Demo1 {

    public static void main(String[] args) {
        TreeSet<Person> list=new TreeSet<>(new PersonHandsomSort());
        list.add(new Person("張學(xué)友",105));
        list.add(new Person("劉德華", 100));
        list.add(new Person("Viking",300));
        
        System.out.println(list);
    }
}
  1. 實(shí)現(xiàn)Compareble接口的自定義類的排序
public class Demo1 {

    public static void main(String[] args) {
        //直接調(diào)用空構(gòu)造器 
        TreeSet<Person> list=new TreeSet<>();
        list.add(new Person("張學(xué)友",105));
        list.add(new Person("劉德華", 100));
        list.add(new Person("Viking",300));
        
        System.out.println(list);
    }
}

TreeMap

TreeMap與TreeSet的使用類似。
TreeMap要求鍵是可以排序的,上面的Person類可以直接當(dāng)做值來排序,鍵隨便放點(diǎn)什么就好了。

  1. Comparator接口
public class Demo1 {

    public static void main(String[] args) {
        TreeMap<Person, String> map=new TreeMap<>(new PersonHandsomSort());
        Person p1=new Person("張學(xué)友",105);
        Person p2=new Person("劉德華", 100);
        Person p3=new Person("Viking",300);
        
        map.put(p1, "123");
        map.put(p2, "123");
        map.put(p3, "123");
        //利用map的KeySet方法,得到存放鍵的數(shù)組,即Person的數(shù)組,再打印
        Set<Person> persons=map.keySet();
        System.out.println(persons);
    }
}
  1. Comparable接口類似,不再重復(fù)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容