我有一个
List<Map<String, Object>>
来自 Spring NamedParameterJdbcTemplate queryForList 调用。数据返回如下所示:
[{"id":5,"uid":6}, {"id":5,"uid":7}, {"id":6,"uid":8}, {"id":7,"uid":7}, {"id":8,"uid":7}, {"id":8,"uid":9}]
如何按照以下格式重新排列数据?
{5:[6, 7], 6:[8], 7:[7], 8:[7, 9]}
我希望返回 Map<Integer, List<Integer>>
有人知道我该如何实现这一目标吗?任何帮助非常感谢?
最佳答案
这是 Collectors.groupingBy
与下游收集器(例如 Collectors.mapping
)的工作
Map<Integer, List<Integer>> result = l.stream()
.collect(Collectors.groupingBy(
m -> (Integer) (m.get("id")),
Collectors.mapping(m -> (Integer) m.get("uuid"), Collectors.toList())));
或者根本没有流:
list.forEach(x -> {
Integer key = (Integer) x.get("id");
Integer value = (Integer) x.get("uuid");
result.computeIfAbsent(key, ignoreMe -> new ArrayList<>()).add(value);
});
关于Java 流按 List<Map<String, Object>> 分组到 Map<Integer, List<Integer>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51975124/