.stream()去重
时间: 2025-06-06 15:45:51 浏览: 13
### 使用 Java Stream API 进行去重操作
#### 利用 `distinct` 方法去除重复元素
当处理大量数据时,Java 8 提供的 Stream API 可以简化编程模型并提高效率。对于包含潜在重复项的数据集,可以使用 `Stream<T>.distinct()` 来创建一个新的流实例,在这个新流里只会保留首次遇到的不同元素[^2]。
下面给出一段具体的代码示例展示如何通过调用 `distinct()` 实现列表内对象的自动去重:
```java
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class DistinctExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 2, 3, 4, 4, 5);
// 使用 stream 和 distinct 对 list 进行去重
List<Integer> uniqueNumbers = numbers.stream()
.distinct()
.collect(Collectors.toList());
System.out.println(uniqueNumbers); // 输出 [1, 2, 3, 4, 5]
}
}
```
这段程序首先定义了一个整数类型的列表 `numbers` ,其中包含了几个相同的数值作为测试样本;接着转换成流形式并通过链式调用来执行 `distinct()` 操作,最终收集结果到新的列表变量 `uniqueNumbers` 中以便打印输出[^1]。
值得注意的是,如果面对的对象类型不是基本数据类型而是自定义类,则需要确保该类正确实现了 `equals(Object)` 和 `hashCode()` 方法,因为 `distinct()` 默认依赖这两个方法来进行相等性比较。
另外,针对更复杂场景下的键值对或记录结构体等形式的数据源,虽然标准库并没有提供名为 `distinctByKey()` 的内置函数,但是可以通过组合其他操作符来自定义实现相似的功能[^3]。
阅读全文
相关推荐


















