我的问题与已经提出的问题here in stackoverflow几乎没有相似之处。我的意见如下:
Map<String, Object> m1 = new HashMap<>();
m1.put("group", "1");
m2.put("A", 10l);
m2.put("B", 20l);
m2.put("C", 100l);
Map<String, Object> m2 = new HashMap<>();
m1.put("group", "1");
m2.put("A", 30l);
m2.put("B", 40l);
m2.put("C", 500l);
List<Map<String, Object>> beforeFormatting = new ArrayList<>();
beforeFormatting.add(m1);
beforeFormatting.add(m2);
我的预期输出是:
Map<String, List<Map<String, Object>>> afterFormatting;
输出:
1 - &gt; [m1,m2]
我在下面尝试过,但是遇到了编译错误:好像我在做映射时出错:
Map<String, List<Map<String, Object>>> afterFormatting = beforeFormatting.stream()
.collect(groupingBy(map -> map.get("group_id"), toList()));
答案 0 :(得分:2)
好map.get("group_id")
会返回Object
,但您尝试将其映射到String
,请更改返回类型:
Map<Object, List<Map<String, Object>>> afterFormatting = beforeFormatting.stream()
.collect(Collectors.groupingBy(map -> map.get("group_id")));
此外,您可以删除toList
,因为在使用单个参数的groupingBy
时会隐式使用它。