stream collector merge maps
Bonjour
j'ai une List<Map<String,List<String>>> et je cherche à obtenir Map<String,List<String>>
[{"a":["X","Y"]},{"a":["X","Z"],"b":["H"]}] =>{"a":["X","Y","Z"],"b":["H"]}
J'ai essayé des truc avec stream mais je n'obtiens pas le bon résultat.
J'ai presque le résultat
{"a":[["X","Y"],["X","Z"]],"b":[["H"]]} mais le type retourné est Map<Object,List<Object>> Il semble que Collectors.toList() récupère pas bien le type des éléments alors qu'ils sont tous de type String.
Code:
1 2 3 4 5 6
| mapGlobal = myList.stream()
.flatMap(m -> m.entrySet().stream())
.collect(Collectors.groupingBy(Map.Entry::getKey,
Collectors.mapping(Map.Entry::getValue,
Collectors.toList()) //<= ICI ça retourne un List<Object> et non un List<String>
)); |
Merci à vous.
A+JYT