stream分页+排序:Java实际开发中list.sort()集合排序详解之多条件排序、分页、空值null的最常用解决方案(JAVA8用lamda表达式和增强版Comparator进行排序)

Java实际开发中list.sort集合排序详解之多条件排序、分页、空值null的最常用解决方案

  • 前言
  • 一、单条件排序
  • 二、多条件排序
  • 三、分页处理
  • 四、空值处理

❤️作者主页:温文尔雅的清欢渡
❤️ 近期学习方向:性能调优

❤️欢迎 点赞 收藏 ⭐ 留言 关注 ✌ 私聊我

前言

工作中,会遇见对list对象进行排序的情况。
JAVA8用lamda表达式和增强版Comparator进行排序

        List<Project> list = projectMapper.queryProjectDetailByCode(body.getProjectCode());

一、单条件排序

  1. 升序
 list.sort(Comparator.comparing(Project::getId));

stream分页+排序:Java实际开发中list.sort()集合排序详解之多条件排序、分页、空值null的最常用解决方案(JAVA8用lamda表达式和增强版Comparator进行排序)_第1张图片

  1. 降序
list.sort(Comparator.comparing(Project::getId).reversed());

stream分页+排序:Java实际开发中list.sort()集合排序详解之多条件排序、分页、空值null的最常用解决方案(JAVA8用lamda表达式和增强版Comparator进行排序)_第2张图片

二、多条件排序

  1. 升序+升序
    先按id升序,当id相同时,再按money升序
list.sort(Comparator.comparing(Project::getId).thenComparing(Project::getMoney));

stream分页+排序:Java实际开发中list.sort()集合排序详解之多条件排序、分页、空值null的最常用解决方案(JAVA8用lamda表达式和增强版Comparator进行排序)_第3张图片

  1. 降序+降序
    先按id降序,当id相同时,再按money降序
      list.sort(Comparator.comparing(Project::getId).thenComparing(Project::getMoney).reversed());

stream分页+排序:Java实际开发中list.sort()集合排序详解之多条件排序、分页、空值null的最常用解决方案(JAVA8用lamda表达式和增强版Comparator进行排序)_第4张图片

  1. 升序+降序
    先按id升序,当id相同时,再按money降序
 list.sort(Comparator.comparing(Project::getId).reversed().thenComparing(Project::getMoney).reversed());

stream分页+排序:Java实际开发中list.sort()集合排序详解之多条件排序、分页、空值null的最常用解决方案(JAVA8用lamda表达式和增强版Comparator进行排序)_第5张图片

  1. 降序+升序
    先按id降序,当id相同时,再按money升序
      list.sort(Comparator.comparing(Project::getId).reversed().thenComparing(Project::getMoney));

stream分页+排序:Java实际开发中list.sort()集合排序详解之多条件排序、分页、空值null的最常用解决方案(JAVA8用lamda表达式和增强版Comparator进行排序)_第6张图片

三、分页处理

  //dtoList -> 当前页所有数据
 List<ProjectDTO> dtoList = list.stream().skip((pageNo - 1) * pageSize).limit(pageSize).collect(Collectors.toList()));

//总条数
dto.setPages(pageNo);
dto.setTotal(list.size());
dto.setList(dtoList);

skip:跳过n个元素,limit裁剪大小,pageNo 当前页,pageSize当前页大小。

四、空值处理

当排序的属性值为null时,需要特殊处理,否则会报java.lang.NullPointerException
stream分页+排序:Java实际开发中list.sort()集合排序详解之多条件排序、分页、空值null的最常用解决方案(JAVA8用lamda表达式和增强版Comparator进行排序)_第7张图片

  1. 升序时,属性值为空排前面
list.sort(Comparator.comparing(Project::getId,Comparator.nullsFirst(Integer::compareTo)));

stream分页+排序:Java实际开发中list.sort()集合排序详解之多条件排序、分页、空值null的最常用解决方案(JAVA8用lamda表达式和增强版Comparator进行排序)_第8张图片
2.升序时,属性值为空排后面

list.sort(Comparator.comparing(Project::getId,Comparator.nullsLast(Integer::compareTo)));

stream分页+排序:Java实际开发中list.sort()集合排序详解之多条件排序、分页、空值null的最常用解决方案(JAVA8用lamda表达式和增强版Comparator进行排序)_第9张图片

  1. 降序时,属性值为空排到后面
list.sort(Comparator.comparing(Project::getId,Comparator.nullsFirst(Integer::compareTo)).reversed());

stream分页+排序:Java实际开发中list.sort()集合排序详解之多条件排序、分页、空值null的最常用解决方案(JAVA8用lamda表达式和增强版Comparator进行排序)_第10张图片

  1. 降序时,属性值为空排到前面
list.sort(Comparator.comparing(Project::getId,Comparator.nullsLast(Integer::compareTo)).reversed());

stream分页+排序:Java实际开发中list.sort()集合排序详解之多条件排序、分页、空值null的最常用解决方案(JAVA8用lamda表达式和增强版Comparator进行排序)_第11张图片

你可能感兴趣的:(01,Java入门级学习指南,java,sort,stream,列表排序)