欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java8 stream的多字段排序?qū)崿F(xiàn)(踩坑)

 更新時間:2021年03月18日 09:57:40   作者:baomw  
這篇文章主要介紹了java8 stream的多字段排序?qū)崿F(xiàn)(踩坑),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

關(guān)于java8 的stream排序用法這里不做多說,這里介紹下曾經(jīng)在多字段排序時遇到過的一個坑。
需求:需要根據(jù)id去分組,然后取出每組中行號最大的一個對象值。
想到可以利用stream的多字段排序,先按id去排,再看行號去排,demo代碼如下:

class Tt{
    private int id;

    private int line;

    public Tt(int id, int line) {
      this.id = id;
      this.line = line;
    }

    public int getId() {
      return id;
    }

    public void setId(int id) {
      this.id = id;
    }

    public int getLine() {
      return line;
    }

    public void setLine(int line) {
      this.line = line;
    }

    @Override
    public String toString() {
      return "Tt{" +
          "id=" + id +
          ", line=" + line +
          '}';
    }
  }

對象代碼如上,只提供id和行號字段,做演示用:
測試代碼如下:

public static void main(String[] args) {
    List<Tt> list = new ArrayList<>();

    list.add(new Tt(1,2));
    list.add(new Tt(2,2));
    list.add(new Tt(5,2));
    list.add(new Tt(5,1));
    list.add(new Tt(4,2));
    list.add(new Tt(7,2));
    list.add(new Tt(3,2));

    List<Tt> sortedList = list.stream() .sorted(Comparator.comparing(Tt::getId)).sorted(Comparator.comparing(Tt::getLine))
        .collect(Collectors.toList());

    System.err.println(sortedList);
  }

根據(jù)理論,應(yīng)該是先根據(jù)id去排好序,再根據(jù)行號去排號序,效果應(yīng)該是,按id順序打印的。結(jié)果如下:

在這里插入圖片描述

發(fā)現(xiàn)其實并不是想像的效果,結(jié)果是按后者順序打印的。
由此推斷出,當(dāng)需要用到stram多條件排序的時候,需要最后排序的字段需要放在前面排,改后代碼如下:

 List<Tt> sortedList = list.stream() .sorted(Comparator.comparing(Tt::getLine)).sorted(Comparator.comparing(Tt::getId))
        .collect(Collectors.toList());

效果如下:

在這里插入圖片描述

達到預(yù)期,問題解決!

到此這篇關(guān)于java8 stream的多字段排序?qū)崿F(xiàn)(踩坑)的文章就介紹到這了,更多相關(guān)java8 stream多字段排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在Ubuntu系統(tǒng)下安裝JDK和Tomcat的教程

    在Ubuntu系統(tǒng)下安裝JDK和Tomcat的教程

    這篇文章主要介紹了在Ubuntu系統(tǒng)下安裝JDK和Tomcat的教程,這樣便是在Linux系統(tǒng)下搭建完整的Java和JSP開發(fā)環(huán)境,需要的朋友可以參考下
    2015-08-08
  • Java?通過手寫分布式雪花SnowFlake生成ID方法詳解

    Java?通過手寫分布式雪花SnowFlake生成ID方法詳解

    SnowFlake是twitter公司內(nèi)部分布式項目采用的ID生成算法,開源后廣受國內(nèi)大廠的好評。由這種算法生成的ID,我們就叫做SnowFlakeID,下面我們來詳細看看
    2022-04-04
  • 使用stream的Collectors.toMap()方法常見的問題及解決

    使用stream的Collectors.toMap()方法常見的問題及解決

    這篇文章主要介紹了使用stream的Collectors.toMap()方法常見的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • java.net.ConnectException異常的正確解決方法(親測有效!)

    java.net.ConnectException異常的正確解決方法(親測有效!)

    java.net.ConnectException異常是與網(wǎng)絡(luò)相關(guān)的最常見的Java異常之一,建立從客戶端應(yīng)用程序到服務(wù)器的TCP連接時,我們可能會遇到它,這篇文章主要給大家介紹了關(guān)于java.net.ConnectException異常的正確解決方法,需要的朋友可以參考下
    2024-01-01
  • 教你用IDEA配置JUnit并進行單元測試

    教你用IDEA配置JUnit并進行單元測試

    今天教各位小伙伴怎么用IDEA配置JUnit并進行單元測試,文中有非常詳細的圖文介紹及代碼示例,對正在學(xué)習(xí)IDEA的小伙伴有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • springboot如何使用assembly打包項目和啟動腳本

    springboot如何使用assembly打包項目和啟動腳本

    這篇文章主要介紹了springboot如何使用assembly打包項目和啟動腳本問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Java實現(xiàn)短信驗證碼服務(wù)的完整代碼示例

    Java實現(xiàn)短信驗證碼服務(wù)的完整代碼示例

    這篇文章主要介紹了Java實現(xiàn)短信驗證碼服務(wù)的完整代碼示例,文中使用阿里云的短信服務(wù)進行應(yīng)用開發(fā)的流程,包括將屬性寫入application.yml配置文件,定義類并指定配置文件,注入實體類對象等等,需要的朋友可以參考下
    2024-09-09
  • SpringBoot的java -jar命令啟動原理解讀

    SpringBoot的java -jar命令啟動原理解讀

    這篇文章主要介紹了SpringBoot的java -jar命令啟動原理,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • jar包運行時提示jar中沒有主清單屬性的解決

    jar包運行時提示jar中沒有主清單屬性的解決

    這篇文章主要介紹了jar包運行時提示jar中沒有主清單屬性的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Java 將Word轉(zhuǎn)為HTML的方法

    Java 將Word轉(zhuǎn)為HTML的方法

    本文介紹如何在JAVA程序中將Word文檔通過Document.saveToFile()方法轉(zhuǎn)換為HTML文檔,導(dǎo)入jar的兩種方法,文中給大家詳細介紹,感興趣的朋友一起看看吧
    2021-10-10

最新評論