亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java中的TreeSet源碼解讀

 更新時(shí)間:2023年09月13日 09:41:14   作者:風(fēng)過(guò)無(wú)痕2018  
這篇文章主要介紹了Java中的TreeSet源碼解讀,TreeSet 是一個(gè) 有序集合,它擴(kuò)展了 AbstractSet 類(lèi)并實(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)部類(lè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類(lèi)里的add()方法]
Comparator<? super K> cpr = comparator; //把之前TreeMap里的比較器賦給cpr
    if (cpr != null) {//cpr 就是我們的匿名內(nèi)部類(lèi)(對(duì)象)
       do {
           parent = t;
           cmp = cpr.compare(key, t.key); //動(dòng)態(tài)綁定到我們的匿名內(nèi)部類(lè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并發(fā)編程之LockSupport類(lèi)詳解

    Java并發(fā)編程之LockSupport類(lèi)詳解

    LockSupport是一種線程阻塞工具,它可以在線程內(nèi)任意位置讓線程阻塞.接下來(lái)就帶著大家詳細(xì)了解一下LockSupport類(lèi),,需要的朋友可以參考下
    2021-05-05
  • SpringBoot?熱搜與不雅文字過(guò)濾的實(shí)現(xiàn)

    SpringBoot?熱搜與不雅文字過(guò)濾的實(shí)現(xiàn)

    本文主要介紹了SpringBoot?熱搜與不雅文字過(guò)濾的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java面試題-實(shí)現(xiàn)復(fù)雜鏈表的復(fù)制代碼分享

    Java面試題-實(shí)現(xiàn)復(fù)雜鏈表的復(fù)制代碼分享

    這篇文章主要介紹了Java面試題-實(shí)現(xiàn)復(fù)雜鏈表的復(fù)制代碼分享,小編覺(jué)得還是挺不錯(cuò)的,具有參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • SpringBoot定時(shí)任務(wù)參數(shù)運(yùn)行代碼實(shí)例解析

    SpringBoot定時(shí)任務(wù)參數(shù)運(yùn)行代碼實(shí)例解析

    這篇文章主要介紹了SpringBoot定時(shí)任務(wù)運(yùn)行代碼實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Java導(dǎo)出網(wǎng)頁(yè)表格Excel過(guò)程詳解

    Java導(dǎo)出網(wǎng)頁(yè)表格Excel過(guò)程詳解

    這篇文章主要介紹了Java導(dǎo)出網(wǎng)頁(yè)表格Excel過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Vue3源碼解讀effectScope API及實(shí)現(xiàn)原理

    Vue3源碼解讀effectScope API及實(shí)現(xiàn)原理

    這篇文章主要為大家介紹了Vue3源碼解讀effectScope API及實(shí)現(xiàn)原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • mybatis-plus enum實(shí)現(xiàn)枚舉類(lèi)型自動(dòng)轉(zhuǎn)換

    mybatis-plus enum實(shí)現(xiàn)枚舉類(lèi)型自動(dòng)轉(zhuǎn)換

    本文主要介紹了mybatis-plus enum實(shí)現(xiàn)枚舉類(lèi)型自動(dòng)轉(zhuǎn)換,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • Java中List根據(jù)map的某個(gè)key去重的代碼

    Java中List根據(jù)map的某個(gè)key去重的代碼

    今天小編就為大家分享一篇關(guān)于Java中List根據(jù)map的某個(gè)key去重的代碼,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • SpringMVC集成FastJson使用流程詳解

    SpringMVC集成FastJson使用流程詳解

    如果你使用 Spring MVC 來(lái)構(gòu)建 Web 應(yīng)用并對(duì)性能有較高的要求的話(huà),可以使用 Fastjson 提供的FastJsonHttpMessageConverter 來(lái)替換 Spring MVC 默認(rèn)的 HttpMessageConverter 以提高 @RestController @ResponseBody @RequestBody 注解的 JSON序列化速度
    2023-02-02
  • java遞歸生成樹(shù)型結(jié)構(gòu)方式

    java遞歸生成樹(shù)型結(jié)構(gòu)方式

    文章介紹了如何使用Java遞歸生成樹(shù)形結(jié)構(gòu),包括獲取數(shù)據(jù)、生成樹(shù)形結(jié)構(gòu)、查詢(xún)子節(jié)點(diǎn)等步驟,作者分享了自己的經(jīng)驗(yàn),希望能對(duì)大家有所幫助
    2024-12-12

最新評(píng)論