首页 > 编程语言 > 详细

Java8 stream.sort 多字段排序

时间:2021-03-09 14:26:44      阅读:183      评论:0      收藏:0      [点我收藏+]

小数据量内存排序方法

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 多字段排序

原文:https://www.cnblogs.com/jianfeijiang/p/14504644.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!