Нов допълнителен пакет в Java 8, известен като java.util.stream е добавен за потребителите за ефективно програмиране. Потокът може да бъде дефиниран като последователност от обекти, поддържащи множество методи. В тази статия ще изследваме Stream в
Следните указания ще бъдат обхванати в тази статия,
Преди да започнем с тази статия за Stream In Java, нека разгледаме някои важни функции,
Поток в Java: Характеристики
- Потокът не е структура от данни и не съхранява елементи. Колекциите, масивите или I / O каналите са мястото, откъдето се влагат данните.
- Източникът на потока остава немодифициран след извършване на операции върху него. Например, филтрирането на поток просто създава нов поток без филтрираните елементи, вместо да модифицира оригиналния поток.
- Операциите за агрегиране като филтриране, намаляване, съвпадение, намиране и т.н. се поддържат от поток.
- Мързелът може да се разглежда като характеристика на потока, тъй като той оценява кодовете само когато е необходимо.
- Посещението на елементите, присъстващи в потока, може да се извърши само веднъж по време на живота на потока. Трябва да се създаде нов поток, който да преразгледа същите елементи, присъстващи в източника.
Продължавайки с тази статия за Stream в Java
Генериране на потоци
Потоците могат да се генерират по следните методи:
- поток () - Връща се последователен поток.колекциясе счита за източник.
- Паралелен поток () - Връща се паралелен поток. Колекцията се счита за източник.
Списъчни низове = Arrays.asList ('Здравей', '', 'Здравей', 'Hola', 'Bonjour', '', 'Namaste') Списъкът е филтриран = strings.stream (). Филтър (низ ->! Низ. isEmpty ()). collect (Collectors.toList ())
Продължавайки с тази статия за Stream в Java
как да спра програмата в java -
Операции по потоци:
Междинни операции:
карта
Наличните елементи в колекцията могат да бъдат съпоставени с други обекти според предиката, предаден като аргумент. Следващият пример се използва за показване на уникални квадрати на числата чрез метода на картата.
Списък num = Arrays.asList (5,4,4,2,3,3) Списък на квадратите = num.stream (). Map (y -> y * y) .distinct (). Collect (Collectors.toList ())
филтър
Елементите могат да бъдат премахнати въз основа на критерии, като се използва този метод.
Име на списъка = Arrays.asList ('събота', 'неделя', 'четвъртък') Списък res = name.stream (). Filter (s-> s.startsWith ('S')). Collect (Collectors.toList () )
сортирани
Потокът може да бъде сортиран чрез този метод.
Име на списъка = Arrays.asList ('събота', 'неделя', 'четвъртък') Списък res = name.stream (). Sorted (). Collect (Collectors.toList ())
Поток в Java: Терминални операции:
събирай
Резултатът от обработката на елементите на поток може да се комбинира с помощта на операцията събиране.
Списък num = Arrays.asList (4,3,2,5,6) Задайте res = num.stream (). Map (y-> y * y) .collect (Collectors.toSet ())
за всеки
Този метод се използва за итерация през всеки елемент, присъстващ в потока.
Списък num = Arrays.asList (4,3,2,5) num.stream (). Map (x-> x * x) .forEach (y-> System.out.println (y))
намаляване
Елементите на потока могат да бъдат намалени до една стойност чрез използването на този метод.
Списък num = Arrays.asList (4,3,2,5) int even = num.stream (). Filter (x-> x% 2 == 0) .reduce (0, (res, i) -> res + и)
Първоначално на променливата res се присвоява стойността 0 и към нея се добавя i.
Продължавайки с тази статия за Stream в Java
Филтриране
Кодът може да бъде филтриран чрез метода на потока. В следващия пример цената на инструментите се филтрира.
import java.util. * import java.util.stream.Collectors class Instrument {int num String name float price public Instrument (int num, String name, float price) {this.num = num this.name = name this.price = цена}} Тест за публичен клас {public static void main (String [] args) {List instrumentsList = new ArrayList () // Добавяне на продукти instrumentsList.add (нов инструмент (1, 'Guitar', 15000f)) toolsList.add (нов Инструмент (2, 'Пиано', 18000f)) toolsList.add (нов Инструмент (3, 'Флейта', 15000f)) toolsList.add (нов Инструмент (4, 'Барабани', 48000f)) инструментиList.add (нов Инструмент ( 5, 'Ukulele', 32000f)) Списък InstrumentPriceList2 = instrumentsList.stream () .filter (p -> p.price> 30000) // филтриране на данни .map (p-> p.price) // извличане на цена .collect ( Collectors.toList ()) // събиране като списък System.out.println (InstrumentPriceList2)}}
Изход:
[48000,0, 32000,0]
Продължавайки с тази статия за Stream в Java
Итерация:
Итерацията може да се извърши с помощта на поток в Java.
импортиране на java.util.stream. * тест за публичен клас {public static void main (String [] args) {Stream.iterate (1, element-> element + 1) .filter (element-> element% 4 == 0). limit (6) .forEach (System.out :: println)}}
Изход:
4
8
инструменти, използвани в анализа на големи данни
12
16.
двайсет
24
Нека да разгледаме друг пример, за да разберем по-ефективно концепцията за Stream в java.
Пример:
import java.util. * import java.util.stream. * public class Test {public static void main (String args []) {// създаване на списък с цели числа Списък num = Arrays.asList (6,7,8,9 ) // използвайки метод на карта Списък квадрати = num.stream (). map (y -> y * y). collect (Collectors.toList ()) System.out.println (квадрати) // създаване на списък със списък с низове дни = Arrays.asList ('петък', 'събота', 'неделя') // метод на филтриране списък res = дни .stream (). filter (s-> s.startsWith ('S')). collect (Collectors.toList ()) System.out.println (res) // сортиран метод Списък display = days.stream (). sorted (). collect (Collectors.toList ()) System.out.println (display) / / създаване на списък с цели числа Списък номер = Arrays.asList (6,9,5,7,1) // методът return връща набор Set sqSet = number.stream (). map (y-> y * y) .collect (Collectors.toSet ()) System.out.println (sqSet) // forEach метод num.stream (). Map (y-> y * y) .forEach (x-> System.out.println (x)) / / метод на намаляване int even = num.stream (). filter (x-> x% 2 == 0) .reduce (0, (result, i) -> result + i) System.out.println (even)}}
Изход:
[36, 49, 64, 81]
[Събота неделя]
[Петък, събота, неделя]
[81, 49, 1, 36, 25]
36
49
64
81
как да задам Java classpath в командния ред на linux
14.
Потоците позволяват на потребителя ефективно да извършва операции върху елементите.
По този начин стигнахме до края на тази статия за „Поток в Java“. Ако искате да научите повече, разгледайте Java Training от Edureka, доверена компания за онлайн обучение. Курсът за обучение и сертифициране на Java J2EE и SOA на Edureka е предназначен да ви обучи както за основните, така и за разширените Java концепции, заедно с различни Java рамки като Hibernate & Spring.
Имате въпрос към нас? Моля, споменете го в раздела за коментари на този блог и ние ще се свържем с вас възможно най-скоро.