1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      Java8Comparator源碼演示及解析

      在前面一篇Java Comparable和Comparator對比詳解中,對于java中的排序方法進(jìn)行比較和具體剖析,主要是針對 Comparator接口和 Comparable接口,無論是哪種方式,都需要實現(xiàn)這個接口,并且重寫里面的 方法。

      創(chuàng)新互聯(lián)建站長期為超過千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為丹陽企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站設(shè)計,丹陽網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

      Java8中對其進(jìn)行了優(yōu)化,直接調(diào)用Comparator類即可實現(xiàn)一些自定義的排序功能,比如按照某個字段升序,并且按照某個字段降序排列;還有如果出現(xiàn)null 的情況怎么處理等等。下面是針對常見的 基礎(chǔ)數(shù)據(jù)類型的list 和 對象的集合 進(jìn)行排序的演示。

      /**
       * 關(guān)于 java8 中的 Comparator 排序方法
       */
      public class CompareController2 {
      
        public static void main(String[] args) {
      
          /**
           * 對常見的list等進(jìn)行升序和降序
           */
          List list = Arrays.asList(10,133,34,546,53,345);
          // 自然順序,升序
          list.sort(Comparator.naturalOrder());
          System.out.println(list);
          // 降序
          list.sort(Comparator.reverseOrder());
          System.out.println(list);
      
          /**
           * 對于 對象的排序
           */
          List studentsList = new ArrayList<>();
          studentsList.add(new Students("zhangSan", 28, "beiJing"));
          studentsList.add(new Students("liSi", 25, "shangHai"));
          studentsList.add(new Students("wangWu", 22));
      
          studentsList.sort(Comparator.comparing(Students::getName));
          System.out.println("按照姓名升序:" + studentsList);
      
          studentsList.sort(Comparator.comparing(Students::getAge).reversed());
          System.out.println("按照年齡降序:" + studentsList);
      
          studentsList.sort(Comparator.comparing(Students::getAddress, Comparator.nullsLast(String::compareTo)).reversed());
          System.out.println("按照地址降序,若有空,放到最前面:" + studentsList);
      
          studentsList.sort(Comparator.comparing(Students::getAddress, Comparator.nullsFirst(String::compareTo)).reversed());
          System.out.println("按照地址降序,若有空,放到最后面:" + studentsList);
      
          studentsList.sort(Comparator.comparing(Students::getAddress, Comparator.nullsLast(String::compareTo)).reversed().thenComparing(Students::getAge));
          System.out.println("按照地址降序,若有空,放到最前面,然后再按照年齡升序:" + studentsList);
      
        }
      }

      Comparator的源碼解析

      最近的學(xué)習(xí),讓我意識到了看源碼的重要性,所以分析完Comparator如何使用后,繼續(xù)研究源碼。

      1)首先看下 comparing 的源碼,其實就是 compareTo 方法。

      Java8 Comparator源碼演示及解析

      2)接下看下 thenComparing 方法,其實就是 compare 方法,和我們實現(xiàn)某個接口并且重寫里面的方法類似,只不過 Comparator在底層幫我們實現(xiàn)了。

      Java8 Comparator源碼演示及解析

      3)最后來看下比較有趣的 nullsFirst 方法和 nullsLast 方法,兩個方法其實主要就是 nullFirst的標(biāo)志位不同,其底層仍然是 實現(xiàn) compare方法,只不過加了一個對于null 的判斷,還有一個是根據(jù) nullFirst的標(biāo)志位 的判斷。Get !!!

      Java8 Comparator源碼演示及解析

      Java8 Comparator源碼演示及解析

      以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


      文章名稱:Java8Comparator源碼演示及解析
      URL分享:http://www.ef60e0e.cn/article/gdcsdc.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        平和县| 巴东县| 南宁市| 岑巩县| 凌云县| 柳州市| 海淀区| 台南县| 大渡口区| 鄂尔多斯市| 手机| 湘潭市| 南华县| 获嘉县| 兴海县| 尖扎县| 德阳市| 百色市| 东源县| 孟津县| 融水| 日照市| 张北县| 阿合奇县| 嘉善县| 平凉市| 大姚县| 苗栗市| 慈溪市| 怀集县| 宜章县| 惠水县| 石门县| 沈丘县| 襄汾县| 七台河市| 长葛市| 攀枝花市| 奉化市| 什邡市| 仲巴县|