最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中的TreeSet源碼解讀

 更新時(shí)間:2023年09月13日 09:41:14   作者:風(fēng)過(guò)無(wú)痕2018  
這篇文章主要介紹了Java中的TreeSet源碼解讀,TreeSet 是一個(gè) 有序集合,它擴(kuò)展了 AbstractSet 類并實(shí)現(xiàn)了 NavigableSet 接口,對(duì)象根據(jù)其自然順序以升序排序和存儲(chǔ),該 TreeSet 中使用 平衡樹(shù),更具體的一個(gè) 紅黑樹(shù),需要的朋友可以參考下

TreeSet源碼解讀

特點(diǎn): 可以排序

解讀

  • 當(dāng)我們使用無(wú)參構(gòu)造器[new TreeSet();] 創(chuàng)建TreeSet時(shí),仍然是無(wú)序的
  • 如果希望添加的元素,按照字符串大小來(lái)排序
    • 使用TreeSet 提供的一個(gè)構(gòu)造器[ new TreeSet(new Comparator()],可以傳入一個(gè)比較器(匿名內(nèi)部類) 并指定排序規(guī)則

看看TreeMap(Comparator<? super K> comparator)的源碼

  • 構(gòu)造器把傳入的比較器對(duì)象,賦給 TreeSet的底層的 TreeMap的屬性this.comparator
    public TreeMap(Comparator<? super K> comparator) {
           this.comparator = comparator;
    }
  • 在 調(diào)用 treeSet.add(“tom”), 在底層會(huì)執(zhí)行到 [TreeMap類里的add()方法]
Comparator<? super K> cpr = comparator; //把之前TreeMap里的比較器賦給cpr
    if (cpr != null) {//cpr 就是我們的匿名內(nèi)部類(對(duì)象)
       do {
           parent = t;
           cmp = cpr.compare(key, t.key); //動(dòng)態(tài)綁定到我們的匿名內(nèi)部類(對(duì)象)compare
           if (cmp < 0)
               t = t.left;
           else if (cmp > 0)
               t = t.right;
           else //如果相等,即返回0,這個(gè)Key就沒(méi)有加入
               return t.setValue(value);
       } while (t != null);
   }

實(shí)際應(yīng)用

    TreeSet treeSet = new TreeSet(new Comparator() {
        @Override
        public int compare(Object o1, Object o2) {
            //下面 調(diào)用String的 compareTo方法進(jìn)行字符串大小比較
            //return ((String) o2).compareTo((String) o1);
            //如果老韓要求加入的元素,按照長(zhǎng)度大小排序
            return ((String) o1).length() - ((String) o2).length();
        }
    });

到此這篇關(guān)于Java中的TreeSet源碼解讀的文章就介紹到這了,更多相關(guān)TreeSet源碼解讀內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java Jersey框架初體驗(yàn)

    java Jersey框架初體驗(yàn)

    本篇主要是Jersey體驗(yàn),你將在不做任何編碼的情況下,體驗(yàn)Jersey框架的神氣魅力!本文還假定你在eclipse里安裝了Maven插件
    2016-07-07
  • spring cloud config 配置中心快速實(shí)現(xiàn)過(guò)程解析

    spring cloud config 配置中心快速實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了spring cloud config 配置中心快速實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • java將一個(gè)整數(shù)轉(zhuǎn)化成二進(jìn)制代碼示例

    java將一個(gè)整數(shù)轉(zhuǎn)化成二進(jìn)制代碼示例

    這篇文章主要介紹了java將一個(gè)整數(shù)轉(zhuǎn)化成二進(jìn)制代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2017-12-12
  • MyBatis-Plus 查詢指定字段的實(shí)現(xiàn)

    MyBatis-Plus 查詢指定字段的實(shí)現(xiàn)

    這篇文章主要介紹了MyBatis-Plus 查詢指定字段的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • spring?IOC容器的Bean管理XML自動(dòng)裝配過(guò)程

    spring?IOC容器的Bean管理XML自動(dòng)裝配過(guò)程

    這篇文章主要為大家介紹了spring?IOC容器Bean管理基于XML的自動(dòng)裝配過(guò)程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • java 定時(shí)器線程池(ScheduledThreadPoolExecutor)的實(shí)現(xiàn)

    java 定時(shí)器線程池(ScheduledThreadPoolExecutor)的實(shí)現(xiàn)

    這篇文章主要介紹了java 定時(shí)器線程池(ScheduledThreadPoolExecutor),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • spring boot linux啟動(dòng)方式詳解

    spring boot linux啟動(dòng)方式詳解

    這篇文章主要介紹了spring boot linux啟動(dòng)方式詳解,分為為前臺(tái)啟動(dòng),后臺(tái)啟動(dòng)和腳本啟動(dòng)的各種方式講解,需要的朋友可以參考下
    2017-11-11
  • MyEclipse安裝JS代碼提示的教程(Spket插件)

    MyEclipse安裝JS代碼提示的教程(Spket插件)

    本篇文章主要介紹了MyEclipse安裝JS代碼提示的教程(Spket插件),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • Java編寫(xiě)實(shí)現(xiàn)窗體程序顯示日歷

    Java編寫(xiě)實(shí)現(xiàn)窗體程序顯示日歷

    這篇文章主要為大家詳細(xì)介紹了Java編寫(xiě)實(shí)現(xiàn)窗體程序顯示日歷,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • eclipse 中的javac命令與java命令

    eclipse 中的javac命令與java命令

    這篇文章主要介紹了eclipse javac命令與java命令的相關(guān)資料,需要的朋友可以參考下
    2016-12-12

最新評(píng)論

贵溪市| 凤庆县| 津南区| 土默特右旗| 婺源县| 景宁| 天长市| 调兵山市| 梧州市| 蒙阴县| 叙永县| 黔西| 于都县| 长丰县| 丹江口市| 胶南市| 遂宁市| 瑞昌市| 武山县| 石城县| 汪清县| 桂林市| 江西省| 万山特区| 滁州市| 大足县| 三门县| 新竹县| 宁化县| 铜陵市| 当阳市| 泰兴市| 朔州市| 林甸县| 九龙坡区| 县级市| 道孚县| 乌恰县| 耿马| 尼玛县| 聂拉木县|