logo

Јава 8 Стреам

Јава пружа нови додатни пакет у Јави 8 под називом јава.утил.стреам. Овај пакет се састоји од класа, интерфејса и енума који омогућава операције у функционалном стилу над елементима. Можете да користите стреам тако што ћете увести пакет јава.утил.стреам.


Стреам нуди следеће функције:

  • Стреам не складишти елементе. Он једноставно преноси елементе из извора као што је структура података, низ или И/О канал, кроз цевовод рачунарских операција.
  • Поток је функционалне природе. Операције извршене на стриму не мењају његов извор. На пример, филтрирање Стреам добијеног из колекције производи нови Стреам без филтрираних елемената, уместо уклањања елемената из изворне колекције.
  • Стреам је лењ и процењује код само када је то потребно.
  • Елементи тока се посећују само једном током живота тока. Попут итератора, мора се генерисати нови ток да би се поново посетили исти елементи извора.

Можете користити стреам за филтрирање, прикупљање, штампање и конвертовање из једне структуре података у другу итд. У следећим примерима, применили смо различите операције уз помоћ стреам-а.

Методе интерфејса Јава стрима

Методе Опис
боолеан аллМатцх (предикат предиката) Враћа све елементе овог тока који одговарају датом предикату. Ако је ток празан онда се враћа труе и предикат се не вреднује.
боолеан аниМатцх (предикат предикат) Враћа било који елемент овог тока који одговара датом предикату. Ако је ток празан онда се враћа фалсе и предикат се не вреднује.
статички Стреам.Буилдер буилдер() Враћа буилдер за ток.
Р цоллецт (колектор колектор) Он врши променљиву операцију редукције на елементима овог тока користећи Цоллецтор. Колекционар обухвата функције које се користе као аргументи за прикупљање (Супплиер, БиЦонсумер, БиЦонсумер), омогућавајући поновну употребу стратегија прикупљања и састав операција прикупљања као што је груписање на више нивоа или партиционисање.
Р цоллецт (испоручилац добављача, акумулатор БиЦонсумер, комбинатор БиЦонсумер) Он врши променљиву операцију редукције на елементима овог тока. Променљива редукција је она у којој је смањена вредност променљиви контејнер резултата, као што је АрраиЛист, а елементи су уграђени ажурирањем стања резултата, а не заменом резултата.
статички Стреам цонцат(Стреам а, Стреам б) Он ствара лењо повезан ток чији су елементи сви елементи првог тока праћени свим елементима другог тока. Резултујући ток је поређан ако су оба улазна тока поређана, а паралелан ако је један од улазних токова паралелан. Када се резултујући ток затвори, позивају се руковаоци затварања за оба улазна тока.
дуго бројање () Враћа број елемената у овом току. Ово је посебан случај смањења.
Стрим различит() Враћа ток који се састоји од различитих елемената (према Објецт.екуалс(Објецт)) овог тока.
статички ток празан() Враћа празан секвенцијални ток.
Филтер стрима (предикат предиката) Враћа ток који се састоји од елемената овог тока који одговарају датом предикату.
Опционо финдАни() Враћа Опционо које описује неки елемент тока, или празно Опционо ако је ток празан.
Опционо финдФирст() Враћа Опционо које описује први елемент овог тока, или празно Опционо ако је ток празан. Ако ток нема редослед сусрета, било који елемент може бити враћен.
Стреам флатМап(Фунцтионмапер) Враћа ток који се састоји од резултата замене сваког елемента овог тока са садржајем мапираног тока произведеног применом обезбеђене функције мапирања на сваки елемент. Сваки мапирани ток се затвара након што је његов садржај стављен у овај ток. (Ако је мапирани ток нула, уместо тога се користи празан ток.)
ДоублеСтреам флатМапТоДоубле(Мапер функција) Враћа ДоублеСтреам који се састоји од резултата замене сваког елемента овог тока са садржајем мапираног тока произведеног применом обезбеђене функције мапирања на сваки елемент. Сваки мапирани ток се затвара након што се његов садржај стави у овај ток. (Ако је мапирани ток нула, уместо тога се користи празан ток.)
ИнтСтреам флатМапТоИнт (пресликавач функција) Враћа ИнтСтреам који се састоји од резултата замене сваког елемента овог тока са садржајем мапираног тока произведеног применом обезбеђене функције мапирања на сваки елемент. Сваки мапирани ток се затвара након што је његов садржај стављен у овај ток. (Ако је мапирани ток нула, уместо тога се користи празан ток.)
ЛонгСтреам флатМапТоЛонг(Мапер функција) Враћа ЛонгСтреам који се састоји од резултата замене сваког елемента овог тока са садржајем мапираног тока произведеног применом обезбеђене функције мапирања на сваки елемент. Сваки мапирани ток се затвара након што је његов садржај стављен у овај ток. (Ако је мапирани ток нула, уместо тога се користи празан ток.)
воид форЕацх (акција потрошача) Изводи акцију за сваки елемент овог тока.
воид форЕацхОрдеред (акција потрошача) Он изводи акцију за сваки елемент овог тока, у редоследу сусрета тока ако ток има дефинисан ред сусрета.
генерисање статичког тока (добављач) Враћа бесконачан секвенцијални неуређени ток где сваки елемент генерише обезбеђени добављач. Ово је погодно за генерисање константних токова, токова случајних елемената, итд.
итерација статичког тока (Т сеед, УнариОператор ф) Враћа бесконачан секвенцијални уређени ток произведен итеративном применом функције ф на почетно семе елемента, стварајући ток који се састоји од семена, ф(семена), ф(ф(семена)), итд.
Ограничење стрима (дужа максимална величина) Враћа ток који се састоји од елемената овог тока, скраћеног да не буде дужи од макСизе.
Мапа тока (мапер функција) Враћа ток који се састоји од резултата примене дате функције на елементе овог тока.
ДоублеСтреам мапТоДоубле(ТоДоублеФунцтион мапер) Враћа ДоублеСтреам који се састоји од резултата примене дате функције на елементе овог тока.
ИнтСтреам мапТоИнт(ТоИнтФунцтион мапер) Враћа ИнтСтреам који се састоји од резултата примене дате функције на елементе овог тока.
ЛонгСтреам мапТоЛонг(ТоЛонгФунцтион мапер) Враћа ЛонгСтреам који се састоји од резултата примене дате функције на елементе овог тока.
Опциони максимум (компаратор компаратор) Враћа максимални елемент овог тока према датом компаратору. Ово је посебан случај смањења.
Опциони мин (компаратор компаратор) Враћа минимални елемент овог тока према обезбеђеном компаратору. Ово је посебан случај смањења.
боолеан нонеМатцх (предикат предиката) Враћа елементе овог тока који одговарају датом предикату. Ако је ток празан онда се враћа труе и предикат се не вреднује.
@СафеВараргс статички ток (Т... вредности) Враћа секвенцијално уређени ток чији су елементи наведене вредности.
статички ток (Т т) Враћа секвенцијални ток који садржи један елемент.
Завирите у стрим (акција потрошача) Враћа ток који се састоји од елемената овог тока, додатно обављајући предвиђену акцију на сваком елементу пошто се елементи троше из резултујућег тока.
Опционо смањење (акумулатор Бинарног Оператора) Он врши редукцију на елементима овог тока, користећи асоцијативну функцију акумулације, и враћа Опциону која описује смањену вредност, ако постоји.
Т смањи (Т идентитет, акумулатор бинарног оператора) Он врши редукцију на елементима овог тока, користећи дату вредност идентитета и асоцијативну функцију акумулације, и враћа смањену вредност.
У смањи (У идентитет, БиФунцтион акумулатор, БинариОператор комбинатор) Он врши редукцију на елементима овог тока, користећи обезбеђене функције идентитета, акумулације и комбиновања.
Прескочи стрим (дуго н) Враћа ток који се састоји од преосталих елемената овог тока након одбацивања првих н елемената тока. Ако овај ток садржи мање од н елемената, биће враћен празан ток.
Стреам сортед() Враћа ток који се састоји од елемената овог тока, сортираних према природном реду. Ако елементи овог тока нису упоредиви, јава.ланг.ЦлассЦастЕкцептион може бити избачен када се изврши операција терминала.
Стрим сортиран (компаратор компаратор) Враћа ток који се састоји од елемената овог тока, сортираних према обезбеђеном компаратору.
Објецт[] тоАрраи() Враћа низ који садржи елементе овог тока.
А[] тоАрраи (генератор ИнтФунцтион) Враћа низ који садржи елементе овог тока, користећи обезбеђену функцију генератора за додељивање враћеног низа, као и све додатне низове који могу бити потребни за партиционисано извршавање или за промену величине.

Јава пример: Филтрирање колекције без употребе Стреам-а

У следећем примеру, филтрирамо податке без коришћења стрима. Овај приступ смо користили пре него што је стреам пакет објављен.

поставити делимитер јава
 import java.util.*; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class JavaStreamExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,&apos;HP Laptop&apos;,25000f)); productsList.add(new Product(2,&apos;Dell Laptop&apos;,30000f)); productsList.add(new Product(3,&apos;Lenevo Laptop&apos;,28000f)); productsList.add(new Product(4,&apos;Sony Laptop&apos;,28000f)); productsList.add(new Product(5,&apos;Apple Laptop&apos;,90000f)); List productPriceList = new ArrayList(); for(Product product: productsList){ // filtering data of list if(product.price<30000){ productpricelist.add(product.price); adding price to a productpricelist } system.out.println(productpricelist); displaying data < pre> <p> <strong>Output:</strong> </p> <pre> [25000.0, 28000.0, 28000.0] </pre> <hr> <h3>Java Stream Example: Filtering Collection by using Stream</h3> <p>Here, we are filtering data by using stream. You can see that code is optimized and maintained. Stream provides fast execution.</p> <pre> import java.util.*; import java.util.stream.Collectors; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class JavaStreamExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,&apos;HP Laptop&apos;,25000f)); productsList.add(new Product(2,&apos;Dell Laptop&apos;,30000f)); productsList.add(new Product(3,&apos;Lenevo Laptop&apos;,28000f)); productsList.add(new Product(4,&apos;Sony Laptop&apos;,28000f)); productsList.add(new Product(5,&apos;Apple Laptop&apos;,90000f)); List productPriceList2 =productsList.stream() .filter(p -&gt; p.price &gt; 30000)// filtering data .map(p-&gt;p.price) // fetching price .collect(Collectors.toList()); // collecting as list System.out.println(productPriceList2); } } </pre> <p> <strong>Output:</strong> </p> <pre> [90000.0] </pre> <hr> <h3>Java Stream Iterating Example</h3> <p>You can use stream to iterate any number of times. Stream provides predefined methods to deal with the logic you implement. In the following example, we are iterating, filtering and passed a limit to fix the iteration.</p> <pre> import java.util.stream.*; public class JavaStreamExample { public static void main(String[] args){ Stream.iterate(1, element-&gt;element+1) .filter(element-&gt;element%5==0) .limit(5) .forEach(System.out::println); } } </pre> <p> <strong>Output:</strong> </p> <pre> 5 10 15 20 25 </pre> <hr> <h3>Java Stream Example: Filtering and Iterating Collection</h3> <p>In the following example, we are using filter() method. Here, you can see code is optimized and very concise.</p> <pre> import java.util.*; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class JavaStreamExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,&apos;HP Laptop&apos;,25000f)); productsList.add(new Product(2,&apos;Dell Laptop&apos;,30000f)); productsList.add(new Product(3,&apos;Lenevo Laptop&apos;,28000f)); productsList.add(new Product(4,&apos;Sony Laptop&apos;,28000f)); productsList.add(new Product(5,&apos;Apple Laptop&apos;,90000f)); // This is more compact approach for filtering data productsList.stream() .filter(product -&gt; product.price == 30000) .forEach(product -&gt; System.out.println(product.name)); } } </pre> <p> <strong>Output:</strong> </p> <pre> Dell Laptop </pre> <hr> <h3>Java Stream Example : reduce() Method in Collection</h3> <p>This method takes a sequence of input elements and combines them into a single summary result by repeated operation. For example, finding the sum of numbers, or accumulating elements into a list. </p> <p>In the following example, we are using reduce() method, which is used to sum of all the product prices.</p> <pre> import java.util.*; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class JavaStreamExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,&apos;HP Laptop&apos;,25000f)); productsList.add(new Product(2,&apos;Dell Laptop&apos;,30000f)); productsList.add(new Product(3,&apos;Lenevo Laptop&apos;,28000f)); productsList.add(new Product(4,&apos;Sony Laptop&apos;,28000f)); productsList.add(new Product(5,&apos;Apple Laptop&apos;,90000f)); // This is more compact approach for filtering data Float totalPrice = productsList.stream() .map(product-&gt;product.price) .reduce(0.0f,(sum, price)-&gt;sum+price); // accumulating price System.out.println(totalPrice); // More precise code float totalPrice2 = productsList.stream() .map(product-&gt;product.price) .reduce(0.0f,Float::sum); // accumulating price, by referring method of Float class System.out.println(totalPrice2); } } </pre> <p> <strong>Output:</strong> </p> <pre> 201000.0 201000.0 </pre> <hr> <h3>Java Stream Example: Sum by using Collectors Methods</h3> <p>We can also use collectors to compute sum of numeric values. In the following example, we are using Collectors class and it?s specified methods to compute sum of all the product prices.</p> <pre> import java.util.*; import java.util.stream.Collectors; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class JavaStreamExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,&apos;HP Laptop&apos;,25000f)); productsList.add(new Product(2,&apos;Dell Laptop&apos;,30000f)); productsList.add(new Product(3,&apos;Lenevo Laptop&apos;,28000f)); productsList.add(new Product(4,&apos;Sony Laptop&apos;,28000f)); productsList.add(new Product(5,&apos;Apple Laptop&apos;,90000f)); // Using Collectors&apos;s method to sum the prices. double totalPrice3 = productsList.stream() .collect(Collectors.summingDouble(product-&gt;product.price)); System.out.println(totalPrice3); } } </pre> <p> <strong>Output:</strong> </p> <pre> 201000.0 </pre> <hr> <h3>Java Stream Example: Find Max and Min Product Price</h3> <p>Following example finds min and max product price by using stream. It provides convenient way to find values without using imperative approach.</p> <pre> import java.util.*; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class JavaStreamExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,&apos;HP Laptop&apos;,25000f)); productsList.add(new Product(2,&apos;Dell Laptop&apos;,30000f)); productsList.add(new Product(3,&apos;Lenevo Laptop&apos;,28000f)); productsList.add(new Product(4,&apos;Sony Laptop&apos;,28000f)); productsList.add(new Product(5,&apos;Apple Laptop&apos;,90000f)); // max() method to get max Product price Product productA = productsList.stream().max((product1, product2)-&gt;product1.price &gt; product2.price ? 1: -1).get(); System.out.println(productA.price); // min() method to get min Product price Product productB = productsList.stream().min((product1, product2)-&gt;product1.price &gt; product2.price ? 1: -1).get(); System.out.println(productB.price); } } </pre> <p> <strong>Output:</strong> </p> <pre> 90000.0 25000.0 </pre> <hr> <h3>Java Stream Example: count() Method in Collection</h3> <pre> import java.util.*; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class JavaStreamExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,&apos;HP Laptop&apos;,25000f)); productsList.add(new Product(2,&apos;Dell Laptop&apos;,30000f)); productsList.add(new Product(3,&apos;Lenevo Laptop&apos;,28000f)); productsList.add(new Product(4,&apos;Sony Laptop&apos;,28000f)); productsList.add(new Product(5,&apos;Apple Laptop&apos;,90000f)); // count number of products based on the filter long count = productsList.stream() .filter(product-&gt;product.price<30000) .count(); system.out.println(count); } < pre> <p> <strong>Output:</strong> </p> <pre> 3 </pre> <p>stream allows you to collect your result in any various forms. You can get you result as set, list or map and can perform manipulation on the elements.</p> <hr> <h3>Java Stream Example : Convert List into Set</h3> <pre> import java.util.*; import java.util.stream.Collectors; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class JavaStreamExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,&apos;HP Laptop&apos;,25000f)); productsList.add(new Product(2,&apos;Dell Laptop&apos;,30000f)); productsList.add(new Product(3,&apos;Lenevo Laptop&apos;,28000f)); productsList.add(new Product(4,&apos;Sony Laptop&apos;,28000f)); productsList.add(new Product(5,&apos;Apple Laptop&apos;,90000f)); // Converting product List into Set Set productPriceList = productsList.stream() .filter(product-&gt;product.price product.price) .collect(Collectors.toSet()); // collect it as Set(remove duplicate elements) System.out.println(productPriceList); } } </pre> <p> <strong>Output:</strong> </p> <pre> [25000.0, 28000.0] </pre> <hr> <h3>Java Stream Example : Convert List into Map</h3> <pre> import java.util.*; import java.util.stream.Collectors; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class JavaStreamExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,&apos;HP Laptop&apos;,25000f)); productsList.add(new Product(2,&apos;Dell Laptop&apos;,30000f)); productsList.add(new Product(3,&apos;Lenevo Laptop&apos;,28000f)); productsList.add(new Product(4,&apos;Sony Laptop&apos;,28000f)); productsList.add(new Product(5,&apos;Apple Laptop&apos;,90000f)); // Converting Product List into a Map Map productPriceMap = productsList.stream() .collect(Collectors.toMap(p-&gt;p.id, p-&gt;p.name)); System.out.println(productPriceMap); } } </pre> <p> <strong>Output:</strong> </p> <pre> {1=HP Laptop, 2=Dell Laptop, 3=Lenevo Laptop, 4=Sony Laptop, 5=Apple Laptop} </pre> <hr> <h3>Method Reference in stream</h3> <pre> import java.util.*; import java.util.stream.Collectors; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } public int getId() { return id; } public String getName() { return name; } public float getPrice() { return price; } } public class JavaStreamExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,&apos;HP Laptop&apos;,25000f)); productsList.add(new Product(2,&apos;Dell Laptop&apos;,30000f)); productsList.add(new Product(3,&apos;Lenevo Laptop&apos;,28000f)); productsList.add(new Product(4,&apos;Sony Laptop&apos;,28000f)); productsList.add(new Product(5,&apos;Apple Laptop&apos;,90000f)); List productPriceList = productsList.stream() .filter(p -&gt; p.price &gt; 30000) // filtering data .map(Product::getPrice) // fetching price by referring getPrice method .collect(Collectors.toList()); // collecting as list System.out.println(productPriceList); } } </pre> <p> <strong>Output:</strong> </p> <pre> [90000.0] </pre> <hr></30000)></pre></30000){>

Пример Јава стрима: Филтрирање колекције помоћу Стреам-а

Овде филтрирамо податке користећи стреам. Можете видети да је код оптимизован и одржаван. Стреам омогућава брзо извршење.

 import java.util.*; import java.util.stream.Collectors; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class JavaStreamExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,&apos;HP Laptop&apos;,25000f)); productsList.add(new Product(2,&apos;Dell Laptop&apos;,30000f)); productsList.add(new Product(3,&apos;Lenevo Laptop&apos;,28000f)); productsList.add(new Product(4,&apos;Sony Laptop&apos;,28000f)); productsList.add(new Product(5,&apos;Apple Laptop&apos;,90000f)); List productPriceList2 =productsList.stream() .filter(p -&gt; p.price &gt; 30000)// filtering data .map(p-&gt;p.price) // fetching price .collect(Collectors.toList()); // collecting as list System.out.println(productPriceList2); } } 

Излаз:

 [90000.0] 

Пример понављања Јава стрима

Можете користити стреам за понављање било који број пута. Стреам пружа унапред дефинисане методе за решавање логике коју имплементирате. У следећем примеру, понављамо, филтрирамо и пређемо ограничење да бисмо поправили итерацију.

 import java.util.stream.*; public class JavaStreamExample { public static void main(String[] args){ Stream.iterate(1, element-&gt;element+1) .filter(element-&gt;element%5==0) .limit(5) .forEach(System.out::println); } } 

Излаз:

 5 10 15 20 25 

Пример Јава стрима: колекција филтрирања и понављања

У следећем примеру користимо метод филтер(). Овде можете видети да је код оптимизован и веома концизан.

 import java.util.*; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class JavaStreamExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,&apos;HP Laptop&apos;,25000f)); productsList.add(new Product(2,&apos;Dell Laptop&apos;,30000f)); productsList.add(new Product(3,&apos;Lenevo Laptop&apos;,28000f)); productsList.add(new Product(4,&apos;Sony Laptop&apos;,28000f)); productsList.add(new Product(5,&apos;Apple Laptop&apos;,90000f)); // This is more compact approach for filtering data productsList.stream() .filter(product -&gt; product.price == 30000) .forEach(product -&gt; System.out.println(product.name)); } } 

Излаз:

 Dell Laptop 

Пример Јава стрима: метода редуцира () у колекцији

Овај метод узима низ улазних елемената и комбинује их у један збирни резултат поновљеном операцијом. На пример, проналажење збира бројева или гомилање елемената у листу.

У следећем примеру користимо метод редуцира () који се користи за збир свих цена производа.

 import java.util.*; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class JavaStreamExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,&apos;HP Laptop&apos;,25000f)); productsList.add(new Product(2,&apos;Dell Laptop&apos;,30000f)); productsList.add(new Product(3,&apos;Lenevo Laptop&apos;,28000f)); productsList.add(new Product(4,&apos;Sony Laptop&apos;,28000f)); productsList.add(new Product(5,&apos;Apple Laptop&apos;,90000f)); // This is more compact approach for filtering data Float totalPrice = productsList.stream() .map(product-&gt;product.price) .reduce(0.0f,(sum, price)-&gt;sum+price); // accumulating price System.out.println(totalPrice); // More precise code float totalPrice2 = productsList.stream() .map(product-&gt;product.price) .reduce(0.0f,Float::sum); // accumulating price, by referring method of Float class System.out.println(totalPrice2); } } 

Излаз:

 201000.0 201000.0 

Пример Јава стрима: Сумирање коришћењем Цоллецторс метода

Такође можемо користити колекторе за израчунавање збира нумеричких вредности. У следећем примеру користимо класу Цоллецторс и њене специфициране методе за израчунавање збира свих цена производа.

 import java.util.*; import java.util.stream.Collectors; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class JavaStreamExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,&apos;HP Laptop&apos;,25000f)); productsList.add(new Product(2,&apos;Dell Laptop&apos;,30000f)); productsList.add(new Product(3,&apos;Lenevo Laptop&apos;,28000f)); productsList.add(new Product(4,&apos;Sony Laptop&apos;,28000f)); productsList.add(new Product(5,&apos;Apple Laptop&apos;,90000f)); // Using Collectors&apos;s method to sum the prices. double totalPrice3 = productsList.stream() .collect(Collectors.summingDouble(product-&gt;product.price)); System.out.println(totalPrice3); } } 

Излаз:

 201000.0 

Пример Јава стрима: Пронађите максималну и минималну цену производа

Следећи пример проналази минималну и максималну цену производа користећи стреам. Пружа згодан начин за проналажење вредности без коришћења императивног приступа.

 import java.util.*; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class JavaStreamExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,&apos;HP Laptop&apos;,25000f)); productsList.add(new Product(2,&apos;Dell Laptop&apos;,30000f)); productsList.add(new Product(3,&apos;Lenevo Laptop&apos;,28000f)); productsList.add(new Product(4,&apos;Sony Laptop&apos;,28000f)); productsList.add(new Product(5,&apos;Apple Laptop&apos;,90000f)); // max() method to get max Product price Product productA = productsList.stream().max((product1, product2)-&gt;product1.price &gt; product2.price ? 1: -1).get(); System.out.println(productA.price); // min() method to get min Product price Product productB = productsList.stream().min((product1, product2)-&gt;product1.price &gt; product2.price ? 1: -1).get(); System.out.println(productB.price); } } 

Излаз:

 90000.0 25000.0 

Пример Јава стрима: метода цоунт() у колекцији

 import java.util.*; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class JavaStreamExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,&apos;HP Laptop&apos;,25000f)); productsList.add(new Product(2,&apos;Dell Laptop&apos;,30000f)); productsList.add(new Product(3,&apos;Lenevo Laptop&apos;,28000f)); productsList.add(new Product(4,&apos;Sony Laptop&apos;,28000f)); productsList.add(new Product(5,&apos;Apple Laptop&apos;,90000f)); // count number of products based on the filter long count = productsList.stream() .filter(product-&gt;product.price<30000) .count(); system.out.println(count); } < pre> <p> <strong>Output:</strong> </p> <pre> 3 </pre> <p>stream allows you to collect your result in any various forms. You can get you result as set, list or map and can perform manipulation on the elements.</p> <hr> <h3>Java Stream Example : Convert List into Set</h3> <pre> import java.util.*; import java.util.stream.Collectors; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class JavaStreamExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,&apos;HP Laptop&apos;,25000f)); productsList.add(new Product(2,&apos;Dell Laptop&apos;,30000f)); productsList.add(new Product(3,&apos;Lenevo Laptop&apos;,28000f)); productsList.add(new Product(4,&apos;Sony Laptop&apos;,28000f)); productsList.add(new Product(5,&apos;Apple Laptop&apos;,90000f)); // Converting product List into Set Set productPriceList = productsList.stream() .filter(product-&gt;product.price product.price) .collect(Collectors.toSet()); // collect it as Set(remove duplicate elements) System.out.println(productPriceList); } } </pre> <p> <strong>Output:</strong> </p> <pre> [25000.0, 28000.0] </pre> <hr> <h3>Java Stream Example : Convert List into Map</h3> <pre> import java.util.*; import java.util.stream.Collectors; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class JavaStreamExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,&apos;HP Laptop&apos;,25000f)); productsList.add(new Product(2,&apos;Dell Laptop&apos;,30000f)); productsList.add(new Product(3,&apos;Lenevo Laptop&apos;,28000f)); productsList.add(new Product(4,&apos;Sony Laptop&apos;,28000f)); productsList.add(new Product(5,&apos;Apple Laptop&apos;,90000f)); // Converting Product List into a Map Map productPriceMap = productsList.stream() .collect(Collectors.toMap(p-&gt;p.id, p-&gt;p.name)); System.out.println(productPriceMap); } } </pre> <p> <strong>Output:</strong> </p> <pre> {1=HP Laptop, 2=Dell Laptop, 3=Lenevo Laptop, 4=Sony Laptop, 5=Apple Laptop} </pre> <hr> <h3>Method Reference in stream</h3> <pre> import java.util.*; import java.util.stream.Collectors; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } public int getId() { return id; } public String getName() { return name; } public float getPrice() { return price; } } public class JavaStreamExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,&apos;HP Laptop&apos;,25000f)); productsList.add(new Product(2,&apos;Dell Laptop&apos;,30000f)); productsList.add(new Product(3,&apos;Lenevo Laptop&apos;,28000f)); productsList.add(new Product(4,&apos;Sony Laptop&apos;,28000f)); productsList.add(new Product(5,&apos;Apple Laptop&apos;,90000f)); List productPriceList = productsList.stream() .filter(p -&gt; p.price &gt; 30000) // filtering data .map(Product::getPrice) // fetching price by referring getPrice method .collect(Collectors.toList()); // collecting as list System.out.println(productPriceList); } } </pre> <p> <strong>Output:</strong> </p> <pre> [90000.0] </pre> <hr></30000)>

стреам вам омогућава да прикупите своје резултате у разним облицима. Можете добити резултат као скуп, листу или мапу и можете вршити манипулацију са елементима.


Пример Јава стрима: Претворите листу у скуп

 import java.util.*; import java.util.stream.Collectors; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class JavaStreamExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,&apos;HP Laptop&apos;,25000f)); productsList.add(new Product(2,&apos;Dell Laptop&apos;,30000f)); productsList.add(new Product(3,&apos;Lenevo Laptop&apos;,28000f)); productsList.add(new Product(4,&apos;Sony Laptop&apos;,28000f)); productsList.add(new Product(5,&apos;Apple Laptop&apos;,90000f)); // Converting product List into Set Set productPriceList = productsList.stream() .filter(product-&gt;product.price product.price) .collect(Collectors.toSet()); // collect it as Set(remove duplicate elements) System.out.println(productPriceList); } } 

Излаз:

 [25000.0, 28000.0] 

Пример Јава стрима: Претворите листу у мапу

 import java.util.*; import java.util.stream.Collectors; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class JavaStreamExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,&apos;HP Laptop&apos;,25000f)); productsList.add(new Product(2,&apos;Dell Laptop&apos;,30000f)); productsList.add(new Product(3,&apos;Lenevo Laptop&apos;,28000f)); productsList.add(new Product(4,&apos;Sony Laptop&apos;,28000f)); productsList.add(new Product(5,&apos;Apple Laptop&apos;,90000f)); // Converting Product List into a Map Map productPriceMap = productsList.stream() .collect(Collectors.toMap(p-&gt;p.id, p-&gt;p.name)); System.out.println(productPriceMap); } } 

Излаз:

 {1=HP Laptop, 2=Dell Laptop, 3=Lenevo Laptop, 4=Sony Laptop, 5=Apple Laptop} 

Референца методе у стриму

 import java.util.*; import java.util.stream.Collectors; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } public int getId() { return id; } public String getName() { return name; } public float getPrice() { return price; } } public class JavaStreamExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,&apos;HP Laptop&apos;,25000f)); productsList.add(new Product(2,&apos;Dell Laptop&apos;,30000f)); productsList.add(new Product(3,&apos;Lenevo Laptop&apos;,28000f)); productsList.add(new Product(4,&apos;Sony Laptop&apos;,28000f)); productsList.add(new Product(5,&apos;Apple Laptop&apos;,90000f)); List productPriceList = productsList.stream() .filter(p -&gt; p.price &gt; 30000) // filtering data .map(Product::getPrice) // fetching price by referring getPrice method .collect(Collectors.toList()); // collecting as list System.out.println(productPriceList); } } 

Излаз:

 [90000.0]