Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

Stream.map()

Преобразует каждый элемент потока.

Доступно с: Java 8

Синтаксис

<R> Stream<R> map(Function<? super T, ? extends R> mapper)

Параметры

ПараметрТипОписание
mapperFunction<? 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 и числовые потоки.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.