Java Map<List<Map<String, Object>>>类型数据,每个key的value只保留第一条,使用lambda
时间: 2024-11-30 09:13:45 浏览: 16
Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并
在Java中,如果你有一个`Map<List<Map<String, Object>>>`类型的集合,其中每个列表对应一个键,而列表中的每个`Map<String, Object>`代表一条记录,并且你想要仅保留每个键的第一条记录,你可以使用Java 8的Stream API和Lambda表达式来过滤并处理这个复杂的映射结构。以下是示例代码:
```java
Map<String, List<Map<String, Object>>> complexMap = ...; // 假设已填充数据
// 使用flatMap转换成流(Stream),然后groupingBy键,再map每个键到一个新的List,只包含第一条记录
Map<String, List<Map<String, Object>>> reducedMap = complexMap.entrySet()
.stream()
.flatMap(entry -> entry.getValue().stream() // 对每个列表展开流
.limit(1) // 取第一条
.collect(Collectors.toList()) // 收集到新的列表
)
.collect(Collectors.toMap(
Map.Entry::getKey, // 使用键作为新映射的键
entry -> entry // 将单个元素作为一个新的Map放入新列表
));
// 这样reducedMap就包含了每个键及其对应的只有一条记录的值
```
阅读全文