当前位置: 首页 > 图灵资讯 > 技术篇> Java 流 |流中的sorted()和distinct()有什么区别?

Java 流 |流中的sorted()和distinct()有什么区别?

来源:图灵教育
时间:2024-12-08 15:48:35

java 流 |流中的sorted()和distinct()有什么区别?

排序()

sorted() 方法用于对流的元素进行排序。它根据元素的自然顺序或自定义比较器对元素进行排序。

主要特征:

返回已排序的元素流。 不消除重复项(它保留所有元素)。 可以使用自然排序或自定义比较器。

示例 1:自然排序

list<integer> numbers = list.of(4, 2, 3, 1, 4);
list<integer> sortedlist = numbers.stream()
                                  .sorted()
                                  .collect(collectors.tolist());
system.out.println(sortedlist); // output: [1, 2, 3, 4, 4]

示例 2:自定义订购

list<string> names = list.of("charlie", "alice", "bob");
list<string> sortednames = names.stream()
                                .sorted((a, b) -> b.compareto(a)) // reverse order
                                .collect(collectors.tolist());
system.out.println(sortednames); // output: [charlie, bob, alice]

2。不同()

立即学习“Java免费学习笔记(深入)”;

distinct() 方法用于从流中删除重复元素。它仅根据 equals() 方法的结果保留唯一元素。

主要特征:

  • 消除流中的重复项。
  • 保留元素的原始顺序(稳定)。
  • 依赖 equals() 的实现来确定唯一性。

示例:删除重复项

list<integer> numbers = list.of(4, 2, 3, 1, 4);
list<integer> distinctlist = numbers.stream()
                                    .distinct()
                                    .collect(collectors.tolist());
system.out.println(distinctlist); // output: [4, 2, 3, 1]

结合sorted()和distinct()的示例

您可以同时使用这两种方法,首先删除重复项,然后对剩余元素进行排序。

List<Integer> numbers = List.of(4, 2, 3, 1, 4);
List<Integer> result = numbers.stream()
                              .distinct() // Remove duplicates
                              .sorted()   // Sort the unique elements
                              .collect(Collectors.toList());
System.out.println(result); // Output: [1, 2, 3, 4]

何时使用每个?

  • 当您想要按特定顺序对元素进行排序时,请使用sorted()。
  • 当您想确保流中没有重复项时,请使用distinct()。
  • 当您的用例需要删除重复项并对结果元素进行排序时,可以组合使用这两种方法。

以上就是Java 流 |流中的sorted()和distinct()有什么区别?的详细内容,更多请关注图灵教育其它相关文章!