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 ().
- Промежуточные (“intermediate”, “lazy”) — обрабатывают поступающие элементы и возвращают стрим. Может быть много, а может и не быть ни одной.
- Терминальные (“terminal”, ещё называют “eager”) — обрабатывают элементы и завершают работу стрима, может быть только один.
Важные моменты:
- Обработка не начнётся до тех пор, пока не будет вызван терминальный оператор. list.stream().filter(s -> s > 5) (не возьмёт ни единого элемента из списка);
- Экземпляр стрима нельзя использовать более одного раза;
Кроме универсальных объектных существуют особые виды стримов для работы с примитивными типами данных int, long и double: IntStream, LongStream и DoubleStream. Эти примитивные стримыработают так же, как и обычные объектные, но со следующими отличиями:
- используют специализированные лямбда-выражения, например, IntFunction или IntPredicate вместо Function и Predicate;
- поддерживают дополнительные конечные операции sum(), average(), mapToObj()
Предыдущий вопрос: 5. Что такое лямбда-выражение? Чем его можно заменить?
Следующий вопрос: 2. Почему Stream называют ленивым?
Все вопросы по теме: список
Все темы: список
Вопросы/замечания/предложения/нашли ошибку:напишите мне