• Java8 stream sorted排序时包括null


    开发过程中对象集合根据某个属性排序是常常遇到的情况,但有时排序会遇到对应属性值为null的情况,会报空指针异常。

    查找stream.sorted源码看到有Comparator.nullsFirst和Comparator.nullsLast方法,使用方法如下:

    1.  
      List<User> list = Lists.newArrayList(new User("Y", "YY"), new User("A", "AA"), new User(null, "CC"));
    2.  
      list.stream().forEach(System.out::println);
    3.  
      System.out.println("------------------------------");
    4.  
       
    5.  
      List<User> nList = list.stream().sorted(
    6.  
      Comparator.comparing(User::getCode, Comparator.nullsFirst(String::compareTo)))
    7.  
      .collect(Collectors.toList());
    8.  
      nList.stream().forEach(System.out::println);
    9.  
       
    10.  
       
    11.  
       
    12.  
       
    13.  
      out:
    14.  
       
    15.  
      Y---YY
    16.  
      A---AA
    17.  
      null---CC
    18.  
      ------------------------------
    19.  
      null---CC
    20.  
      A---AA
    21.  
      Y---YY
    1.  
      class User {
    2.  
      public User(String code, String name) {
    3.  
      this.code = code;
    4.  
      this.name = name;
    5.  
      }
    6.  
       
    7.  
      private String code;
    8.  
      private String name;
    9.  
       
    10.  
      public String getCode() {
    11.  
      return code;
    12.  
      }
    13.  
       
    14.  
      public void setCode(String code) {
    15.  
      this.code = code;
    16.  
      }
    17.  
       
    18.  
      public String getName() {
    19.  
      return name;
    20.  
      }
    21.  
       
    22.  
      public void setName(String name) {
    23.  
      this.name = name;
    24.  
      }
    25.  
       
    26.  
      @Override
    27.  
      public String toString() {
    28.  
      return code + "---" + name;
    29.  
      }
    30.  
      }
  • 相关阅读:
    成为JAVA(高级)工程师
    JVM的内存区域划分以及垃圾回收机制
    XML
    String.valueOf
    JAVA书籍(2)
    JAVA书籍(1)
    深入JAVA线程池
    FileWriter与BufferedWriter
    获取下拉框的文本或值
    删除字符串最后一个字符的几种方法
  • 原文地址:https://www.cnblogs.com/yelanggu/p/13505609.html
Copyright © 2020-2023  润新知