Вы не можете этого сделать, это не имеет смысла:
Collectors.toMap(Person::getFirstName + "_" + Person::getLastName
Нужно понимать, что такое сигнатура метода toMap . Для простоты предположим, что это:
void toMap(Function<? super T,? extends K> keyMapper)
Понимаете? keyMapper - это объект типа Function. Функция принимает ввод (Person) и возвращает вывод (String). Итак, вам нужно предоставить функцию, которая это сделает. Если вы напишете
Person::getFirstName + "_" + Person::getLastName
, то это ... ну, ничего, но, допустим, в худшем случае это может быть String. Потому что вы объединяете 3 вещи с помощью String. Это не функция. Вы хотите создать функцию.
Итак, вы можете сделать это:
Collectors.toMap(new Function<Person, String>() {
public String apply(Person person) {
return person.getFirstName() + "_" + person.getLastName();
}
});
Сокращение для этого:
Collectors.toMap(person -> person.getFirstName() + "_" + person.getLastName()