免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

Java8Comparator源碼演示及解析

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

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

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

/**
 * 關于 java8 中的 Comparator 排序方法
 */
public class CompareController2 {

  public static void main(String[] args) {

    /**
     * 對常見的list等進行升序和降序
     */
    List<Integer> 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<Students> 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的源碼解析

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

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

Java8 Comparator源碼演示及解析

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

Java8 Comparator源碼演示及解析

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

Java8 Comparator源碼演示及解析

Java8 Comparator源碼演示及解析

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創新互聯。

文章題目:Java8Comparator源碼演示及解析
文章URL:http://m.newbst.com/article12/gdcsdc.html

成都網站建設公司_創新互聯,為您提供網站收錄、網站改版、網頁設計公司商城網站電子商務、響應式網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

網站建設網站維護公司