行业资讯 2025年08月6日
0 收藏 0 点赞 609 浏览 2190 个字
摘要 :

文章目录 1. Stream sort() 是重载方法 1.1Stream sorted() 1.2. Stream sorted(comparator) 2. Stream sorted() 示例 2.1按自然顺序对流元素进行排序 2.2. 以相反的……




  • 1. Stream sort() 是重载方法
  • 2. Stream sorted() 示例
    • 2.1按自然顺序对流元素进行排序
    • 2.2. 以相反的顺序对流元素进行排序
    • 2.3. 使用 Comparator 在自定义顺序中对流元素进行排序
    • 2.4. 使用 Lambda 表达式进行 Stream 排序
  • 3. 结论

自 Java 8 以来,sorted() 方法已成为 Stream API 的一部分,用于对流中的元素进行排序。默认情况下,元素按自然顺序排序,但我们可以使用 Comparator 来应用自定义顺序。

// 快速指引
//默认排序
List sortedList = unsortedList.stream().sorted().toList();

//自定义排序
Comparator comparator = ...;
List sortedList = unsortedList.stream().sorted(comparator).toList();

1. Stream sort() 是重载方法

Stream 接口提供了两个用于对元素进行排序的方法:

  • sorted() – 提供默认排序
  • sorted(Comparator) – 根据提供的比较器进行排序。

1.1Stream sorted()

Stream<T> sorted()
  • sorted() 是一种有状态的中间操作,返回一个新的 Stream。
  • 它返回由该流的元素组成的流,按自然顺序排序。
  • 如果该流的元素不可比较,则在执行终端操作时可能会抛出 java.lang.ClassCastException。
  • 对于有序流,排序是稳定的。
  • 对于无序流,不保证稳定性。

1.2. Stream sorted(comparator)

Stream<T> sorted(Comparator<? super T> comparator)
  • 这是一个有状态的中间操作,返回一个新的流。
  • 它返回由该流的元素组成的流,根据提供的 Comparator 进行排序。
  • 对于有序流,排序是稳定的。
  • 对于无序流,不保证稳定性。

2. Stream sorted() 示例

2.1按自然顺序对流元素进行排序

在给定的 Java 示例中,我们按自然顺序对整数列表进行排序,并将其打印到标准输出中。

List<Integer> list = Arrays.asList(2, 4, 1, 3, 7, 5, 9, 6, 8);

List<Integer> sortedList = list.stream()
      .sorted()
      .collect(Collectors.toList());

System.out.println(sortedList); //[1, 2, 3, 4, 5, 6, 7, 8, 9]

2.2. 以相反的顺序对流元素进行排序

在给定的 Java 示例中,我们使用 Comparator.reverseOrder() 以相反的顺序对整数流进行排序,并将其打印到标准输出中。

List<Integer> list = Arrays.asList(2, 4, 1, 3, 7, 5, 9, 6, 8);

List<Integer> sortedList = list.stream()
        .sorted(Comparator.reverseOrder())
        .collect(Collectors.toList());

System.out.println(sortedList); //[9, 8, 7, 6, 5, 4, 3, 2, 1]

2.3. 使用 Comparator 在自定义顺序中对流元素进行排序

在给定的 Java 示例中,我们使用自定义 Comparator 对整数流进行排序并将其打印到标准输出中。

List<Integer> list = Arrays.asList(2, 4, 1, 3, 7, 5, 9, 6, 8);
Comparator<Integer> reverseComparator = new Comparator<Integer>() {
  @Override
  public int compare(Integer i1, Integer i2) {
    return i2.compareTo(i1);
  }
};
List<Integer> sortedList = list.stream()
      .sorted(reverseComparator)
      .collect(Collectors.toList());
System.out.println(sortedList); //[9, 8, 7, 6, 5, 4, 3, 2, 1]

2.4. 使用 Lambda 表达式进行 Stream 排序

使用 lambda 表达式来指定比较逻辑,Java 示例以相反的顺序对整数流进行排序。
我们正在使用内联 lambda 表达式重写先前的比较器逻辑。

List<Integer> list = Arrays.asList(2, 4, 1, 3, 7, 5, 9, 6, 8);
List<Integer> sortedList = list.stream()
      .sorted( (i1, i2) -> i2.compareTo(i1) )
      .collect(Collectors.toList());
System.out.println(sortedList); //[9, 8, 7, 6, 5, 4, 3, 2, 1]

3. 结论

在本 Java 8 Stream 教程中,我们学习了使用 sorted() 方法对流元素进行排序的基础知识。我们学习了按默认升序排序以及使用 Comparator 进行自定义排序。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/9594.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号