Использования Collectors.groupingBy()
я могу легко получить Map<Department, List<Person>>
- это дает мне все Person
объектов, которые являются частью Department
:Java 8 новообращенного Map <департамента Список <Person>> к карте <Департамента, Список <String>>
allPersons.stream().collect(Collectors.groupingBy(Person::getDepartment));
Теперь я хотел бы преобразовать получившийся «multimap» так, чтобы он содержал имена всех лиц, а не объекты Person
.
Одним из способов достижения этой цели является:
final Map<Department, List<String>> newMap = new HashMap<>();
personsByDepartmentMap.stream
.forEach((d, lp) -> newMap.put(
d, lp.stream().map(Person::getName).collect(Collectors.toList())));
Есть ли способ, чтобы достичь этой цели без использования newMap
объекта? Что-то вроде
final Map<Department, List<String>> newMap =
personsByDepartmentMap.stream().someBigMagic();