Учитывая Map<String, Person>
, где Person имеет метод String getName()
(и т.д.), как я могу превратить Map<String, Person>
в Map<String, String>
, где String
получается из вызова Person::getName()
?
Pre-Java 8 Я бы использовал
Map<String, String> byNameMap = new HashMap<>();
for (Map.Entry<String, Person> person : people.entrySet()) {
byNameMap.put(person.getKey(), person.getValue().getName());
}
но я хотел бы сделать это, используя потоки и лямбды.
Я не вижу, как это сделать в функциональном стиле: Map/HashMap не реализует Stream
.
people.entrySet()
возвращает Set<Entry<String, Person>>
, который я могу передать, но как я могу добавить новую Entry<String, String>
к карте назначения?