
java8stream如何升序与降序
用户关注问题
我想使用Java 8 Stream对一个集合中的元素进行升序排序,应该如何操作才能实现这一目标?
使用Stream.sorted()方法实现升序排序
在Java 8中,可以通过Stream的sorted()方法对集合中的数据进行升序排序。默认情况下,sorted()会根据元素的自然顺序进行排序。如果元素是基本数据类型或实现了Comparable接口的对象,则直接调用sorted()即可。比如:list.stream().sorted().collect(Collectors.toList())
我希望将集合中的元素按照降序来排序,Java 8的Stream有什么简便的方法?
利用Comparator.reverseOrder()实现降序排序
可以通过传入Comparator.reverseOrder()给Stream的sorted()方法实现降序排序。示例代码为:list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList()),这会根据元素的自然顺序的反向来排序集合。
我需要对一个对象集合先按某个字段升序,再按另外一个字段降序排序,在Java 8 Stream中怎么实现?
使用Comparator链式比较器进行多字段排序
可以通过Comparator.comparing()方法结合thenComparing()来实现多字段排序。比如:list.stream().sorted(Comparator.comparing(Person::getAge).thenComparing(Comparator.comparing(Person::getName).reversed())).collect(Collectors.toList()),这里年龄升序,姓名降序。