Java Fluxo Agrupamento por List <Map <String, Object >> para Map <Integer, List <Integer >>

DMCG:

eu tenho um

List<Map<String, Object>>

vindo de uma chamada Primavera NamedParameterJdbcTemplate queryForList. O retorno de dados se parece com isso:

[{"id":5,"uid":6}, {"id":5,"uid":7}, {"id":6,"uid":8}, {"id":7,"uid":7}, {"id":8,"uid":7}, {"id":8,"uid":9}]

Como posso reorganizar os dados no seguinte formato?

{5:[6, 7], 6:[8], 7:[7], 8:[7, 9]}

Im olhando para retornar a Map<Integer, List<Integer>>

Alguém tem uma idéia de como posso conseguir isso? Qualquer ajuda muito apreciada ??

ernest_k:

Você pode mapear as chaves e valores para inteiros ao usar um agrupamento-by coletor:

List<Map<String, Object>> maps = null;

Map<Integer, List<Integer>> result = maps.stream()
        .collect(Collectors.groupingBy(
                map -> ((Number) map.get("id")).intValue(),
                    Collectors.mapping(map -> ((Number) map.get("uid")).intValue(), 
                            Collectors.toList())));

Usando ((Number) map.get("id")).intValue()apenas no caso do valor é um Longo.

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=223127&siteId=1
Recomendado
Clasificación