Java flux Regroupement par Liste <Carte <String, Object >> à la carte <Entier, Liste <Entier >>

DMCG:

j'ai un

List<Map<String, Object>>

provenant d'un appel printemps NamedParameterJdbcTemplate queryForList. Le retour de données ressemble à ceci:

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

Comment puis-je réorganiser les données dans le format suivant?

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

Je cherche à retourner un Map<Integer, List<Integer>>

Quelqu'un at-il une idée comment je peux y parvenir? Toute aide appréciée ??

ernest_k:

Vous pouvez mapper les touches et les valeurs en nombres entiers en utilisant un groupement par collecteur:

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())));

En utilisant ((Number) map.get("id")).intValue()juste au cas où la valeur est longue.

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=223130&siteId=1
conseillé
Classement