list<Map<String,String>> map 有三个属性 a b c ,重新组装,合并b的value相同的map,并用逗号拼接c的value,生成新的数组。
时间: 2023-06-03 10:05:29 浏览: 129
复制数组或从数组中抽取特定元素组成新数组
好的,这个问题可以回答。可以使用Java语言实现以下代码逻辑:
```
List<Map<String, String>> originalList = ...; // 原始数组
Map<String, List<Map<String, String>>> bMap = new HashMap<>();
for (Map<String, String> map : originalList) {
String bValue = map.get("b");
if (bMap.containsKey(bValue)) {
bMap.get(bValue).add(map);
} else {
List<Map<String, String>> list = new ArrayList<>();
list.add(map);
bMap.put(bValue, list);
}
}
List<Map<String, String>> newList = new ArrayList<>();
for (Map.Entry<String, List<Map<String, String>>> entry : bMap.entrySet()) {
String bValue = entry.getKey();
List<Map<String, String>> list = entry.getValue();
StringBuilder cStringBuilder = new StringBuilder();
for (Map<String, String> map : list) {
cStringBuilder.append(map.get("c")).append(",");
}
cStringBuilder.deleteCharAt(cStringBuilder.length() - 1); // 删除最后一个逗号
Map<String, String> newMap = new HashMap<>();
newMap.put("a", list.get(0).get("a"));
newMap.put("b", bValue);
newMap.put("c", cStringBuilder.toString());
newList.add(newMap);
}
// 输出结果
for (Map<String, String> map : newList) {
System.out.println(map);
}
```
上述代码的解释:
首先使用一个`Map`对象`bMap`按照b属性的值来组装数组,将b属性相同的放在同一个List中。接下来遍历`bMap`中的每个元素,将b属性相同的Map对象合并,即将c属性拼接成一个字符串,并在原来的基础上新增一个Map对象,放到新数组中即可。
注意,这个代码只是一个简单的示例,不一定符合所有情况,需要视具体业务场景而定。
阅读全文