zoukankan      html  css  js  c++  java
  • Java8 stream.sort 多字段排序

    小数据量内存排序方法

    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;
    }
    

      

    结果一看,一目了然

    梦想还是要有的,万一实现了呢!
  • 相关阅读:
    <Graph> Topological + Undirected Graph 310 Union Find 261 + 323 + (hard)305
    <Topological Sort> ( 高频, hard) 269
    <Stack> (高频)394 ( 高频)224
    <DFS & BFS> 286 339 (BFS)364
    <Matrix> 311 378
    <Binary Search> 81 (高频)34 (很难hard, 高频)315 (hard)354
    <LinkedList> 369 (高)143 (第二遍)142 148
    <DP> (高频)139 375 374 (DP hard)312
    <BackTracking> permutation 254 47 60
    <Tree> 298 250 366 199(高频) 98(高频)
  • 原文地址:https://www.cnblogs.com/jianfeijiang/p/14504644.html
Copyright © 2011-2022 走看看