Stream.map()
Преобразует каждый элемент потока.
Доступно с: Java 8
Синтаксис
<R> Stream<R> map(Function<? super T, ? extends R> mapper)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| mapper | Function<? super T, ? extends R> | Функция, которая превращает элемент в новое значение. |
Возвращаемое значение
Stream<R>Поток результатов функции.
Примеры
Длины строк:
void main() {
List<Integer> lengths = List.of("Java", "Go", "Kotlin").stream()
.map(String::length)
.toList();
IO.println(lengths);
}Результат:
[4, 2, 6]Одно поле из каждой записи:
record User(String name, String email) {}
void main() {
var users = List.of(new User("Anna", "anna@mail.com"), new User("Oleg", "oleg@mail.com"));
String emails = users.stream().map(User::email).collect(Collectors.joining("; "));
IO.println(emails);
}Результат:
anna@mail.com; oleg@mail.comПримечания
Число элементов не меняется — каждому входному соответствует один выходной. Тип может меняться: из Stream<String> получается Stream<Integer>. Для чисел лучше mapToInt() — тогда доступны sum() и average(). Если функция возвращает коллекцию, а нужен плоский поток, используйте flatMap().
См. также
- Stream.filter() — Оставляет в потоке только элементы, подходящие под условие.
- Stream.flatMap() — Превращает каждый элемент в поток и склеивает все потоки в один.
- Stream.mapToInt() — Превращает поток объектов в поток чисел `int`.
- Function — Функция, которая принимает значение типа `T` и возвращает значение типа `R`.
Вопросы и ответы по теме
В учебнике
- Операции над потоками — Основные операции Stream API — filter, map, sorted, distinct, limit, skip, count, reduce, anyMatch, findFirst и числовые потоки.