Java 8 Flux groupingby
J'ai List<Map<String, String>>
chaque élément de la liste est une carte électronique.g
companyName - IBM
firstName - James
country - USA
...
Je voudrais créer un Map<String, List<String>>
où il est associé de la société à une liste de prénom
e.g
IBM -> James, Mark
ATT -> Henry, Robert..
private Map<String,List<String>> groupByCompanyName(List<Map<String, String>> list) {
return list.stream().collect(Collectors.groupingBy(item->item.get("companyName")));
}
mais cela va créer Map<String, List<Map<String, String>>
(cartographie comanyName à une liste de cartes)
comment créer un Map<String, List<String>>
?
Vous devez vous connecter pour publier un commentaire.
Ne l'ai pas testé, mais quelque chose comme cela devrait fonctionner:
String[]
au lieu deList<String>
Collectors.toArray
méthode. @VinitSolankiVous pouvez utiliser le formulaire:
c'est à dire spécifier les valeurs à partir de la carte dans l'aval pour être pris sous forme de liste. La documentation a bon exemple pour lui (ici).
downstream
être quelque chose comme -mapping(item->item.get(<name>), toList())
La groupingBy méthode donne une carte dont les valeurs sont des listes. Si vous voulez traiter de ces listes, d'une certaine façon, de fournir un "en aval du collecteur"
Dans votre cas, vous ne voulez pas une Liste comme la valeur, de sorte que vous devez fournir en aval du collecteur.
Pour manipuler la Carte, vous pouvez utiliser la méthode statique de la cartographie dans les Collecteurs de fichier:
Il génère essentiellement un collecteur par application d'une fonction à l'aval, les résultats et les transmet la fonction à un autre collectionneur.
Revenir un peu en aval du collecteur qui permet d'obtenir ce que vous voulez.