Всичко, което трябва да знаете за потока в Java



Тази статия ще ви запознае с Stream in Java, пакет, наскоро въведен в Java, и подробно обяснение за това, което може да направи.

Нов допълнителен пакет в 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.

Имате въпрос към нас? Моля, споменете го в раздела за коментари на този блог и ние ще се свържем с вас възможно най-скоро.