先创建Comparator接口的匿名内部类对象,然后在匿名内部类对象中重写compare方法,以实现排序。下述案例排序规则:先以年龄降序排列,再以姓名降序排列: /** * 使用匿名内部类重写Comparator方法以定义排序规则 */privatestaticvoiddefineOrderByInnerClass(){ List<UserDTO> list = getUsers(); list.stream().sor...
关于List排序,工作中,一般使用SQL中的order by进行排序,但有时候使用Java代码进行排序,例如合并多个list对象的数据后,以年龄降序排列,这显然是无法通过SQL语句搞定的,而一般的冒泡排序、希尔排序等需要手写实现,容易出错,而且代码量大,测试工作量自然不容小觑。这时,就需要搬出Stream sort方法进行排序,重写其中的Comparator。
1. Stream<T> sorted(); 2. Stream<T> sorted(Comparator<? super T> comparator); 2. 拓展及思考 引入 用了一段时间的jdk8的新特性,lambda表达式、方法引用、stream流,用起来是真的顺手啊,最近碰到了一个排序的问题,引发了一些思考,然后就写了这篇博客,归纳总结sorted的用法,在做笔记的同时也让自己有更...
list.stream().sorted(Comparator.comparing(类::属性一).reversed().thenComparing(类::属性二).reversed());//先以属性一升序,升序结果进行属性一降序,再进行属性二升序,结果进行属性一降序属性二降序 list.stream().sorted(Comparator.comparing(类::属性一).thenComparing(类::属性二,Comparator.reverseOrder())...
【Z】:最后使用发布时间字段进行排序,并且使用降序排列(Comparator.reverseOrder()) 两种倒序方式 Comparator.comparing(类::属性,Comparator.reverseOrder()) /*** 按照推荐、置顶、发布时间来排序* @param list*/privatestaticvoidsort(List<Article>list){List<Article>sortList=list.stream()// 【X】.sorted(Com...
//返回 对象集合以类属性一升序排序 list.stream().sorted(Comparator.comparing(类::属性一)); //返回 对象集合以类属性一降序排序 注意两种写法 list.stream().sorted(Comparator.comparing(类::属性一).reversed());//先以属性一升序,结果进行属性一降序 ...
摘要:介绍使用Java Stream流排序器Comparator对List集合进行多字段排序的方法,包括复杂实体对象多字段升降序排序方法。 综述 工作中,一般使用SQL中的order by进行排序,但有时候在Java代码中进行排序,例如合并多个list对象的数据后,以年龄降序排列,这显然是无法通过SQL语句搞定的,而一般的冒泡排序、希尔排序等需要手写实现...
4.2 定制排序 根据年龄降序排序。 list = list.stream().sorted(Comparator.comparing(Student::getAge).reversed()).collect(Collectors.toList()); 5 多字段排序 先按姓名升序,姓名相同则按年龄升序。 list = list.sorted(Comparator.comparing(Student::getName).thenComparing(Student::getAge)).collect(Collecto...
//返回 对象集合以类属性一降序排序 注意两种写法 list.stream().sorted(Comparator.comparing(类::属性一).reversed());//先以属性一升序,结果进行属性一降序 list.stream().sorted(Comparator.comparing(类::属性一,Comparator.reverseOrder()));//以属性一降序 ...