Как можно компактнее
Просто оберните его в свою собственную служебную функцию:
public <T, S> List<S> mapBy(List<T> items, Function<T, S> mapFn) {
return items.stream().map(mapFn).collect(Collectors.toList());
}
Теперь вы можете просто использовать mapBy(students, Student::getName)
.Он не становится менее многословным, чем это.
Обратите внимание, что это полезно только в том случае, если это единственная мутация данных, которую вы хотите создать.Если у вас есть больше операторов потоков, которые вы хотите применить, лучше сделать это, так как в противном случае вы продолжаете создавать промежуточные списки, что довольно расточительно.