list<Map<String,String>> map 有三个属性 a b c ,重新组装,合并b的value相同的map,并用逗号拼接c的value,生成新的数组。
时间: 2023-06-03 22:05:30 浏览: 95
好的,这是一个关于Java编程的问题。我可以帮你解答。
你可以使用Java8的Stream API来实现这一需求。以下是可能的解决方案:
```java
List<Map<String, String>> mapList = ...; // 给出原始 mapList
List<Map<String, String>> result = mapList.stream()
.collect(Collectors.groupingBy(m -> m.get("b")))
.entrySet().stream()
.map(entry -> {
Map<String, String> m = new HashMap<>();
m.put("b", entry.getKey());
m.put("c", entry.getValue().stream().map(m1 -> m1.get("c")).collect(Collectors.joining(",")));
return m;
})
.collect(Collectors.toList());
```
这段代码的具体实现原理为,先使用 `Collectors.groupingBy()` 方法按照 b 属性进行分组,然后对每个分组执行一个操作,将 b 的值设为该分组的键,将 c 的值设为该分组中所有元素的 c 值的拼接结果。最终,使用 `Collectors.toList()` 方法将所有分组合并成一个新的 List。
请注意,本段代码中使用了 Lambda 表达式和 Stream API,需要在 Java 8 或以上的版本中运行。
阅读全文
相关推荐















