stream 过滤重复的值
时间: 2024-10-20 13:14:39 浏览: 6
Stream API是Java 8引入的一种高级功能,用于处理集合数据。如果你想从流(Stream)中过滤出重复的值,可以使用`distinct()`方法。这个方法返回一个新的流,其中包含原始流中的唯一元素,去除所有重复项。例如:
```java
List<String> list = Arrays.asList("a", "b", "c", "b", "d");
List<String> distinctList = list.stream()
.distinct() // 过滤重复
.collect(Collectors.toList());
```
在这个例子中,`distinctList`将只包含" a", "b", "c", 和 "d",重复的 "b" 被去除了。
如果你想要基于某个条件过滤重复,而不是简单的值相等比较,可以使用`Collectors.groupingBy()`配合`Collectors.counting()`来找出每个元素出现的次数,然后筛选出出现次数大于1的:
```java
Map<String, Long> countMap = list.stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
List<String> nonDuplicateList = countMap.entrySet().stream()
.filter(entry -> entry.getValue() == 1)
.map(Map.Entry::getKey)
.collect(Collectors.toList());
```
这将得到一个只包含唯一元素的新列表。
阅读全文