Учитывая 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> к карте назначения?