我有一个地图列表List<Map<String, Object>>
。我想移至Map<String, String[]>
有人可以让我知道如何转换吗?
List<Map<String, Object>> currentList = new ArrayList<Map<String, Object>>();
Map<String, Object> currMap = new HashMap<String, Object>();
currMap.put("A", "ABC");
currMap.put("B", "PQR");
currMap.put("C", "XYZ");
currentList.add(currMap);
currMap.put("A", "123");
currMap.put("B", "456");
currMap.put("C", "789");
currentList.add(currMap);
currMap.put("A", "OOO");
currMap.put("B", "ZZZ");
currentList.add(currMap);
将来:
“ A”,[“ ABC”,“ 123”,“ OOO”],
“ B”,[“ PQR”,“ 456”,“ ZZZ”],
“ C”,[“ XYZ”,“ 789”,“”]
答案 0 :(得分:0)
使用流的一种方法是:
currentList.stream()
.flatMap(map -> map.entrySet().stream())
.collect(Collectors.groupingBy(Entry::getKey, Collectors.mapping(Entry::getValue, Collectors.toList())));
这将导致:
{A=[ABC, 123, OOO], B=[PQR, 456, ZZZ], C=[XYZ, 789]}
作为一个旁注,示例中生成currentList
的方式不会产生您可能期望的地图列表。照原样,您将获得对列表中同一地图的3个引用。