1. Что такое Stream API? Для чего нужны стримы?

1. Что такое Stream API? Для чего нужны стримы?

UNKNOWN

Интерфейс java.util.Stream представляет собой последовательность элементов, над которой можно производить различные операции.

Нужны для упрощения работы с наборами данных, в частности, упростить операции фильтрации, сортировки и другие манипуляции с данными.

IntStream.of(50, 60, 70, 80, 90, 100, 110, 120).filter(x -> x < 90).map(x -> x + 10).limit(3).forEach(System.out::print);

Cоздаем экземпляр Stream 

  • Пустой стрим: Stream.empty()
  • Стрим из List: list.stream()
  • Стрим из Map: map.entrySet().stream()
  • Стрим из массива: Arrays.stream(array)
  • Стрим из указанных элементов: Stream.of(\"1\", \"2\", \"3\")
  • Стрим из BufferedReader с помощью метода lines (); нужно закрывать close ().
  1. Промежуточные (“intermediate”, “lazy”) — обрабатывают поступающие элементы и возвращают стрим. Может быть много, а может и не быть ни одной.
  2. Терминальные (“terminal”, ещё называют “eager”) — обрабатывают элементы и завершают работу стрима, может быть только один.

Важные моменты:

  • Обработка не начнётся до тех пор, пока не будет вызван терминальный оператор. list.stream().filter(s -> s > 5) (не возьмёт ни единого элемента из списка);
  • Экземпляр стрима нельзя использовать более одного раза;

Кроме универсальных объектных существуют особые виды стримов для работы с примитивными типами данных int, long и double: IntStream, LongStream и DoubleStream. Эти примитивные стримыработают так же, как и обычные объектные, но со следующими отличиями:

  • используют специализированные лямбда-выражения, например, IntFunction или IntPredicate вместо Function и Predicate;
  • поддерживают дополнительные конечные операции sum(), average(), mapToObj()

Предыдущий вопрос: 5. Что такое лямбда-выражение? Чем его можно заменить?

Следующий вопрос: 2. Почему Stream называют ленивым?

Все вопросы по теме: список

Все темы: список

Вопросы/замечания/предложения/нашли ошибку:напишите мне

Report Page