代码编织梦想

Stream sorted()
Stream sorted​(Comparator<? super T> comparator)
对流中元素进行排序,排序后的元素放到新流中返回。
无参的方法按照自然顺序排序,有参数的方法根据自定义的比较器进行比较排序。

这两个方法都是有状态的中间操作,对于有序流排序结果是固定的,对于无序流则无法保证得到固定的排序结果。

看例子:

void stream_sorted() {
 
        List<String> list = List.of("43","55","23","25","65");
 
       
 
        list.stream().sorted().forEach(a -> System.out.print(a+" "));
 
        System.out.println("");
 
        list.parallelStream().sorted().forEach(a -> System.out.print(a+" "));
 
        System.out.println("\n --- --- ---");
 
        list.stream().sorted((a,b) -> Integer.parseInt(b)-Integer.parseInt(a)).forEach(a -> System.out.print(a+" "));
 
        System.out.println("");
 
        list.parallelStream().sorted((a,b) -> Integer.parseInt(b)-Integer.parseInt(a)).forEach(a -> System.out.print(a+" "));
 
}

运行结果:

23 25 43 55 65

43 23 55 25 65

 --- --- ---

65 55 43 25 23

43 25 65 55 23
list.stream().sorted().forEach(a -> System.out.print(a+" "));

这行代码是按自然顺序排序

list.stream().sorted((a,b) -> Integer.parseInt(b)-Integer.parseInt(a)).forEach(a -> System.out.print(a+" "));

这行代码是根据自定义的比较器进行排序,这里定义的作用就是逆序排序。

然后就是两个并行流的排序,因为是并行流因此无法得到固定的顺序,因此在并行流中使用这两个方法一定要慎重。

Stream实现分组后排序操作,可以先排序,然后再Collectors.groupingBy()分组,
Stream支持并非操作,不存在Stream并发时,上边的方法可以实现分组后排序操作,存在Stream并发时就不行,会乱。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43842093/article/details/127992379

java8排序stream.sorted()_延陵缥缈的博客-爱代码爱编程_stream sorted

       在这个页面上我们将提供java 8 Stream sorted()示例。我们可以按照自然排序以及Comparator提供的排序对流进行排序。在java 8中Comparator可以使用lambda表达式进行实例化。我们还可以反转自然排序以及提供的排序Comparator。自然排序使用提供的顺序Comparable,必须由其实例是流元素的类实现

java sort sorted,性能对比:collections.sort vs treeSet sort vs java8 stream.sorted-爱代码爱编程

0 写在前面的话 在项目中有一个排序问题,考虑到未来需要排序的数据量可能很大,想用一个性能较好的排序算法,现在有三套解决方法:jdk提供的集合的sort方法(Collections.sort)、一个可排序的数据结构TreeSet、Java8中流的排序(stream.sorted)。 我们都知道,TreeSet的底层是用红黑树实现的,它在调用集合上的

快速排序比stream.sorted()快-爱代码爱编程

package test; import java.time.Duration; import java.time.Instant; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Random; import jav

java 8 安全级别,为什么Stream.sorted在Java 8中不是类型安全的?-爱代码爱编程

This is from the Stream interface from Oracle's implementation of JDK 8: public interface Stream extends BaseStream> { Stream sorted(); } and it is very easy to blow th

stream.sorted()多字段排序及foreach的参数问题-爱代码爱编程

写一点今天在写代码时遇到的问题: 1、使用stream流时多字段的排序问题 (1)多字段排序:使用Comparator.comparing,此时会对第一字段进行排序,如果第一字段相等,此时进入第二字段的排序Comparator.comparing().thenComparing(),接着,第三个字段···第n个字段均可使用.thenComparing()来

集合list使用stream.sorted的方式进行排序-爱代码爱编程

可以支持多个字段的排序,单个字段排序,只写一个字段就行了 sorted的使用 按一个字段进行排序时 例如,按年龄进行排序,默认升序 List studentsSortName = studentList.stream() .sorted(Comparator.comparing(StudentInfo::getAge)).collect(Coll

Java8-使用stream.sorted()对List和Map排序-爱代码爱编程

@Data @AllArgsConstructor public class DailyDataChartVo { /** * 日期 */ private LocalDate date; /** * 今日营收 */ private BigDecimal revenue; } //L

lambda 自定义排序规则(stream.sorted()),实现按照某个集合的顺序排序-爱代码爱编程

lambda 自定义排序规则(stream.sorted()),实现按照某个集合的顺序排序 // 要排序的规则集合 List<String> sortedList = Arrays.asList("领导", "经理", "员工"); // 要进行排序的数据集合,一般为数据库查询得到 List<User> list = userMa

list.sort和list.stream.sorted_list stream sort_相思子~的博客-爱代码爱编程

问题描述 最近写接口的时候,查完数据顺手排序了一下,结果列表数据始终是乱序的,查了好久都没看出问题,最后才发现是自己写list.sort写习惯了,把list.stream.sorted也当成list.sort使用了。 知

java如何使用stream.sorted对一个list进行排序呢?_java sortedlist-爱代码爱编程

转自: java如何使用stream.sorted对一个list进行排序呢? list简介:     集合就是把具有相同属性的东西放在一起,也可以是容器,把有关的东西都放进去     List是位于java.util下的一个接口,有序集合(也称为序列)     用户可以精确控制每个元素在列表中的插入位置。用户可以通过整数索引(列表中的位置)访问元