【问题标题】:List<Map<String, Object>> to Map<String, String[]>List<Map<String, Object>> 到 Map<String, String[]>
【发布时间】:2020-08-01 02:40:55
【问题描述】:

我有一个地图列表List&lt;Map&lt;String, Object&gt;&gt;。我想搬到Map&lt;String, String[]&gt; 有人可以告诉我如何转换吗?

        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", ""]

【问题讨论】:

    标签: list dictionary arraylist


    【解决方案1】:

    使用流的一种方法是:

    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 次引用。

    【讨论】:

      猜你喜欢
      • 2018-09-22
      • 2021-04-29
      • 2020-01-26
      • 1970-01-01
      • 1970-01-01
      • 2015-11-21
      • 1970-01-01
      • 1970-01-01
      • 2010-10-05
      相关资源
      最近更新 更多