Disons que j'ai une classe Dog
.
A l'intérieur, j'ai un Map<String,String>
et l'une des valeurs est Breed
.
public class Dog {
String id;
...
public Map<String,String>
}
Je veux obtenir un Map
de List
s:
HashMap<String, List<Dog>> // breed to a List<Dog>
Je préfère utiliser un Stream
plutôt que de l'itérer.
Comment puis-je le faire?
Vous pouvez le faire avec groupingBy
.
En supposant que votre entrée est un List<Dog>
, le membre Map
à l'intérieur de la classe Dog
est appelé map
et la race est stockée pour la clé "Breed":
List<Dog> dogs = ...
HashMap<String, List<Dog>> map = dogs.stream()
.collect (Collectors.groupingBy(d -> d.map.get("Breed")));
La bonne réponse ci-dessus peut encore être améliorée en utilisant la notation de programmation fonctionnelle:
List<Dog> dogs = ...
HashMap<String, List<Dog>> map = dogs.stream()
.collect(Collectors.groupingBy(Dog::getBreed));