列出<Map <String,Object >>到Map <String,String []>

时间:2020-04-18 14:57:33

标签: list dictionary arraylist

我有一个地图列表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”,“”]

1 个答案:

答案 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个引用。