API Stream, представлений у Java 8, використовується для обробки колекцій об’єктів. Потік у Java — це послідовність об’єктів, яка підтримує різні методи, які можуть бути конвеєрними для отримання бажаного результату.
Використання потоку в Java
Нижче наведено використання потоку в Java:
- Stream API — це спосіб вираження та обробки колекцій об’єктів.
- Дозвольте нам виконувати такі операції, як фільтрація, відображення, скорочення та сортування.
Як створити потік Java?
Створення Java Stream є одним із основних кроків перед розглядом функціональних можливостей Java Stream. Нижче наведено синтаксис того, як оголосити Java Stream.
Синтаксис
Stream stream;>
Тут Т є класом, об’єктом або типом даних залежно від оголошення.
Функції Java Stream
Нижче наведено особливості потоку Java:
- Потік не є структурою даних, натомість він отримує вхідні дані від колекцій, масивів або каналів введення/виведення.
- Потоки не змінюють вихідну структуру даних, вони лише надають результат відповідно до конвеєрних методів.
- Кожна проміжна операція виконується ліниво і в результаті повертає потік, тому різні проміжні операції можуть бути конвеєрними. Термінальні операції позначають кінець потоку та повертають результат.
Різні операції над потоками
Існує два типи операцій у потоках:
scanner.next java
- Проміжні операції
- Припинити операції
Проміжні операції

Проміжні операції — це типи операцій, у яких декілька методів з’єднані в ряд.
Характеристика проміжних операцій
- Методи з’єднані разом.
- Проміжні операції перетворюють потік в інший потік.
- Це дозволяє концепцію фільтрації, коли один метод фільтрує дані та передає їх іншому методу після обробки.
Переваги Java Stream
Нижче наведено деякі переваги, завдяки яким ми використовуємо Stream у Java:
- Немає місця для зберігання
- Конвеєр функцій
- Лінь
- Може бути нескінченним
- Можна паралелізувати
- Можна створювати з колекцій, масивів, рядків файлів, методів у Stream, IntStream тощо.
Важливі проміжні операції
Нижче наведено кілька проміжних операцій:
1. map()
Метод map використовується для повернення потоку, що складається з результатів застосування заданої функції до елементів цього потоку.
List number = Arrays.asList(2,3,4,5); List square = number.stream().map(x->x*x).collect(Collectors.toList());>
2. filter()
Метод фільтра використовується для вибору елементів відповідно до предикату, переданого як аргумент.
jpa проти hibernate
List names = Arrays.asList('Reflection','Collection','Stream'); List result = names.stream().filter(s->s.startsWith('S')).collect(Collectors.toList());> 3. відсортований()
Метод сортування використовується для сортування потоку.
List names = Arrays.asList('Reflection','Collection','Stream'); List result = names.stream().sorted().collect(Collectors.toList());> Термінальні операції
Операції терміналу — це тип операцій, які повертають результат. Ці операції не обробляються далі, а повертають кінцеве значення результату.
об'єкт java
Важливі термінальні операції
Нижче наведено кілька термінальних операцій:
1. collect()
Метод collect використовується для повернення результату проміжних операцій, виконаних над потоком.
List number = Arrays.asList(2,3,4,5,3); Set square = number.stream().map(x->x*x).collect(Collectors.toSet());>
2. forEach()
Метод forEach використовується для проходження кожного елемента потоку.
List number = Arrays.asList(2,3,4,5); number.stream().map(x->x*x).forEach(y->System.out.println(y));>
3. зменшити()
Метод зменшення використовується для зведення елементів потоку до одного значення. Метод reduce приймає BinaryOperator як параметр.
List number = Arrays.asList(2,3,4,5); int even = number.stream().filter(x->x%2==0).reduce(0,(ans,i)-> ans+i);>
Тут змінній ans присвоюється 0 як початкове значення, а i додається до неї.
Примітка: Проміжні операції виконуються на основі концепції відкладеної оцінки, яка гарантує, що кожен метод повертає фіксоване значення (термінальна операція) перед переходом до наступного методу.
Приклад Java Stream
Java
bin до bcd
скільки міст у Сполучених Штатах Америки
// Java program to demonstrate> // the use of stream in java> import> java.util.*;> import> java.util.stream.*;> class> Demo {> >public> static> void> main(String args[])> >{> >// create a list of integers> >List number = Arrays.asList(>2>,>3>,>4>,>5>);> >// demonstration of map method> >List square> >= number.stream()> >.map(x ->x * x)> >.collect(Collectors.toList());> >// create a list of String> >List names = Arrays.asList(> >'Reflection'>,>'Collection'>,>'Stream'>);> >// demonstration of filter method> >List result> >= names.stream()> >.filter(s ->s.startsWith(>'S'>))> >.collect(Collectors.toList());> > >System.out.println(result);> >// demonstration of sorted method> >List show> >= names.stream()> >.sorted()> >.collect(Collectors.toList());> > >System.out.println(show);> >// create a list of integers> >List numbers> >= Arrays.asList(>2>,>3>,>4>,>5>,>2>);> >// collect method returns a set> >Set squareSet> >= numbers.stream()> >.map(x ->х * х)> >.collect(Collectors.toSet());> > >System.out.println(squareSet);> >// demonstration of forEach method> >number.stream()> >.map(x ->x * x)> >.forEach(y ->System.out.println(y));> >// demonstration of reduce method> >int> even> >= number.stream()> >.filter(x ->x %>>2> ==>0>)> >.reduce(>0>, (ans, i) ->ans + i);> >System.out.println(even);> >}> }> |
>
>
Вихід
[4, 9, 16, 25] [Stream] [Collection, Reflection, Stream] [16, 4, 9, 25] 4 9 16 25 6>
Важливі моменти/спостереження щодо Java Stream
- Потік складається з джерела, за яким слідує нуль або більше проміжних методів, об’єднаних (конвеєрних), і термінального методу для обробки об’єктів, отриманих із джерела відповідно до описаних методів.
- Потік використовується для обчислення елементів відповідно до конвеєрних методів без зміни початкового значення об’єкта.