Java8 stream.sort 多字段排序

摘要:
小数据的内存排序方法是packagecom.flying.basicKnowledge。流动importlombok。数据importorg.junit。班前;importorg.junit。测验导入java.time。本地日期;导入java.util。阵列列表;导入java.util。比较器;重要的,重要的

小数据量内存排序方法

package com.flying.basicKnowledge.stream;

import lombok.Data;
import org.junit.BeforeClass;
import org.junit.Test;

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @program: SimpleJavaKnowledge
 * @description:
 * @author: jiangjianfei
 * @create: 2021-03-08 09:57
 **/
public class SortThenComparingTest {
    private static List<DateEntity> list;

    @BeforeClass
    public static void init() {
        list = new ArrayList<>();
        DateEntity dateEntity = new DateEntity();
        dateEntity.setDateA(LocalDate.of(2021, 10, 10));
        dateEntity.setDateB(LocalDate.of(2021, 10, 11));
        list.add(dateEntity);
        dateEntity = new DateEntity();
        dateEntity.setDateA(LocalDate.of(2022, 10, 10));
        dateEntity.setDateB(LocalDate.of(2021, 10, 11));
        list.add(dateEntity);
        dateEntity = new DateEntity();
        dateEntity.setDateA(LocalDate.of(2021, 10, 10));
        dateEntity.setDateB(LocalDate.of(2022, 10, 11));
        list.add(dateEntity);
        dateEntity = new DateEntity();
        dateEntity.setDateA(LocalDate.of(2022, 10, 10));
        dateEntity.setDateB(LocalDate.of(2022, 10, 11));
        list.add(dateEntity);
    }

    @Test
    public void sortTest() {
        // 按照 dateA 排序,如果相同,在按照 dateB 排序 (从过去到现在,过去的时间排在前面)
        List<DateEntity> list2 = list.stream().sorted(Comparator.comparing(DateEntity::getDateA)
                .thenComparing(DateEntity::getDateB)).collect(Collectors.toList());
        // 按照 dateA 排序,如果相同,在按照 dateB 排序 (从现在到过去,现在的时间排在前面)
        List<DateEntity> list3 = list.stream().sorted(Comparator.comparing(DateEntity::getDateA)
                .thenComparing(DateEntity::getDateB).reversed()).collect(Collectors.toList());
        System.out.println("");
    }
}


@Data
class DateEntity {
    private LocalDate dateA;
    private LocalDate dateB;
}

  

结果一看,一目了然

Java8 stream.sort 多字段排序第1张

免责声明:文章转载自《Java8 stream.sort 多字段排序》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C#对XML、JSON等格式的解析 (转)接口实现后台GZIP压缩,pako.js 前端解压下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

前端重点题目汇总

1 . Blob 对象中的type属性表示的文件是 MIME 类型。   Blob构造函数返回一个新的Blob对象,基本语法是 var aBlob = new Blob( array, options );   其中 array 是 ArrayBuffer, ArrayBufferView, Blob, DOMString 等对象构成的 Array ,或者...

设计模式六大原则(5):迪米特法则

定义:一个对象应该对其他对象保持最少的了解。 问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。 解决方案:尽量降低类与类之间的耦合。          自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。低耦合...

jxl java工具类,导出excel,导入数据库

1: 引入jxl jar 我使用的为maven管理, <!--Excel工具--> <dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifactId>jxl</artifactId> &...

C#2.0泛型-Dictionary,List的用法

泛型最常见的用途是创建集合类。 .NETFramework类库在System.Collections.Generic命名空间中包含几个新的泛型集合类。应尽可能地使用这些类来代替普通的类,如System.Collections命名空间中的ArrayList,HashTable等。 下面我们就来说下,几个泛型集合类的用法: 一.Dictionary 此类在.N...

C# List&amp;lt;T&amp;gt;排序总结(摘抄)

这里有很多种方法对List进行排序,本文总结了三种方法,但多种实现。 1.对基础类型排序 方法一: 调用sort方法,如果需要降序,进行反转: List<int> list = new List<int>(); list.Sort();// 升序排序 list.Reverse();// 反转顺序 方法二: 使用lambda表达式,在...

二、Java对返回参数进行处理(JSONObject,getJSONArray等)

一、根据返回参数格式获取其中的值 1.得到ResponseEntity<String> responseEntity对象 import org.springframework.http.ResponseEntity; 得到ResponseEntity<String> responseEntity对象 <200, {...