package com.morris.java8.sort; import java.util.Comparator; import java.util.Optional; import java.util.stream.Collectors; /** * 对字段中包含null的数据排序抛出异常 */ public class NullFieldOrderExceptionDemo { public static void main(String[] args) { Optional.of(Person.nullablePersonList().st...
关于List排序,工作中,一般使用SQL中的order by进行排序,但有时候使用Java代码进行排序,例如合并多个list对象的数据后,以年龄降序排列,这显然是无法通过SQL语句搞定的,而一般的冒泡排序、希尔排序等需要手写实现,容易出错,而且代码量大,测试工作量自然不容小觑。这时,就需要搬出Stream sort方法进行排序,重写其中的Comparator。
步骤1:创建Java类表示待排序对象 publicclassSortObject{privateintfield1;privateintfield2;// 构造函数publicSortObject(intfield1,intfield2){this.field1=field1;this.field2=field2;}// getter和setter方法publicintgetField1(){returnfield1;}publicvoidsetField1(intfield1){this.field1=field1;}publicintg...
我们可以通过Comparator.comparing()方法链式调用thenComparing()来实现多字段排序。首先按年龄排序,如果年龄相同,则按姓名排序。 java import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; public class StreamSortExample { public static void main(Strin...
工作中,一般使用SQL中的order by进行排序,但有时候在Java代码中进行排序,例如合并多个list对象的数据后,以年龄降序排列,这显然是无法通过SQL语句搞定的,而一般的冒泡排序、希尔排序等需要手写实现,容易出错,而且代码量大,测试工作量自然不容小觑。这时,就需要搬出Stream sort方法进行排序,重写其中的Comparator。
//空/Null数据排序 list.stream().sorted(Comparator.comparing(类::属性一).thenComparing(item -> item.属性二, Comparator.nullsLast(Date::compareTo))).collect(Collectors.toList()); //空/Null数据分组 Map<String, List<类>> map = list.stream().collect(Collectors.groupingBy(item -> { ...
【Z】:最后使用发布时间字段进行排序,并且使用降序排列(Comparator.reverseOrder()) 两种倒序方式 Comparator.comparing(类::属性,Comparator.reverseOrder()) /*** 按照推荐、置顶、发布时间来排序* @param list*/privatestaticvoidsort(List<Article>list){List<Article>sortList=list.stream()// 【X】.sorted(Com...
size(); i++) { if(i == 3){ // 根据班级去排序 temp.add(itsm.get(i)); map.put(itsm.get(i),itsm); } } } // 降序 List<String> sortList = temp.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList()); // 升序 List<String> sortList = temp.stream().sorted(...
java8 stream多字段排序的实现 很多情况下sql不好解决的多表查询,临时表分组,排序,尽量用java8新特性stream进行处理 使用java8新特性,下面先来点基础的 List<类> list; 代表某集合 //返回 对象集合以类属性一升序排序 list.stream().sorted(Comparator.comparing(类::属性一)); ...
2.7排序(sorted) 2.8提取/组合 1、Stream 创建 方式一:通过 java.util.Collection.stream() 方法用集合创建流 /** * 创建方式一:通过 java.util.Collection.stream() 方法用集合创建流 */ List<String> list = Arrays.asList("a", "b", "c", "d"); ...