Поток Java - сортировка списка в HashMap из списков
Допустим, у меня есть класс Dog
.
Внутри него у меня есть Map<String,String>
и одним из значений является Breed
.
public class Dog {
String id;
...
public Map<String,String>
}
Я хочу получить Map
List
s:
HashMap<String, List<Dog>> // breed to a List<Dog>
Я бы предпочел использовать Stream
а не повторять его.
Как мне это сделать?
Ответы
Ответ 1
Вы можете сделать это с помощью groupingBy
.
Предполагая, что вы вводите List<Dog>
, член Map
внутри класса Dog
называется map
, и Breed сохраняется для ключа "Breed":
List<Dog> dogs = ...
HashMap<String, List<Dog>> map = dogs.stream()
.collect (Collectors.groupingBy(d -> d.map.get("Breed")));
Ответ 2
Отличный ответ, приведенный выше, может быть улучшен с помощью функциональной нотации программирования:
List<Dog> dogs = ...
HashMap<String, List<Dog>> map = dogs.stream()
.collect(Collectors.groupingBy(Dog::getBreed));