📜  Java中的 Stream.distinct()(1)

📅  最后修改于: 2023-12-03 14:42:52.091000             🧑  作者: Mango

Java中的 Stream.distinct()

在Java 8中,Stream API引入了一些非常有用的操作,其中一个是distinct()方法。该方法返回一个只包含不同元素的新流。在本篇文章中,我们将深入了解Java中的Stream.distinct()方法。

distinct() 方法的语法

distinct()方法返回一个经过去重处理的新流。它不接受任何参数。以下是该方法的语法:

Stream<T> distinct()
distinct() 方法的用法

distinct()方法是Stream API中的一种中间操作,它返回一个去重后的新流。在调用该方法之前,我们需要一个源流,可以是数组、集合、I/O流、生成器等。以下是使用distinct()方法的一些示例:

List<String> list = Arrays.asList("Java", "Python", "C++", "Java", "Ruby", "Python");
Stream<String> distinctStream = list.stream().distinct();
distinctStream.forEach(System.out::println);

输出:

Java
Python
C++
Ruby
Set<Integer> set = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5, 1, 2, 3, 4, 5));
Stream<Integer> distinctStream = set.stream().distinct();
distinctStream.forEach(System.out::println);

输出:

1
2
3
4
5
高级用法

在一些情况下,我们需要去除流中的某些元素,而不是全部。在这种情况下,我们可以传递一个Predicate参数给distinct()方法。该Predicate函数返回一个布尔值,该值指示元素是否应被视为不同的。以下是使用谓词去除偶数的示例:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
Stream<Integer> oddDistinctStream = list.stream().distinct(i -> i % 2 != 0);
oddDistinctStream.forEach(System.out::println);

输出:

1
2
3
4
5

在上面的示例中,我们传递了一个谓词表达式,该表达式仅返回奇数,因此偶数被去除了。

总结

在这篇文章中,我们了解了Java Stream API中的distinct()方法。我们从其语法、用法和高级用法方面进行了讨论。distinct()方法是Stream API中的一个强大的中间操作,它提供了一种简单的方法来过滤重复的元素。