Java流按List <Map <String,Object >>分组到Map <Integer,List <Integer >>

DMc*_*Mcg 2 java java-stream

我有一个

List<Map<String, Object>>
Run Code Online (Sandbox Code Playgroud)

来自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}]
Run Code Online (Sandbox Code Playgroud)

如何按以下格式重新排列数据?

{5:[6, 7], 6:[8], 7:[7], 8:[7, 9]}
Run Code Online (Sandbox Code Playgroud)

我想回来一个 Map<Integer, List<Integer>>

任何人都知道如何实现这一目标?任何帮助非常感谢?

Eug*_*ene 6

这是一个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())));
Run Code Online (Sandbox Code Playgroud)

或根本没有溪流:

list.forEach(x -> {
        Integer key = (Integer) x.get("id");
        Integer value = (Integer) x.get("uuid");
        result.computeIfAbsent(key, ignoreMe -> new ArrayList<>()).add(value);
    });
Run Code Online (Sandbox Code Playgroud)