list 使用stream根据map某个字段去重
时间: 2024-10-08 18:08:43 浏览: 32
Java中对List去重 Stream去重的解决方法
在Java中,如果你有一个`List<Map<String, Object>>`,并且你想根据其中每个map的某个字段(比如键名为"name")进行去重,你可以使用Java Stream API来实现。这里是一个简单的示例:
```java
import java.util.*;
import java.util.stream.*;
List<Map<String, Object>> list = ... // 这里是你原始的map列表
// 假设"name"字段总是存在,并且可以转换为String类型
List<Map<String, Object>> deduplicatedList = list.stream()
.collect(Collectors.groupingBy(map -> ((Map<String, String>) map).get("name"), // 获取"name"字段的值
Collectors.toList())) // 使用list作为收集器,每组元素会放在一个新的list中
.values(); // 最终返回所有唯一的"name"对应的map列表
```
这个例子中,`Collectors.groupingBy()`方法按照"name"字段的值将map分组,然后`Collectors.toList()`创建了一个新的list,其中每个list元素对应于"name"字段的一个唯一值。
阅读全文