logo

Java 8 Stream

A Java egy új kiegészítő csomagot biztosít a Java 8-ban java.util.stream néven. Ez a csomag osztályokból, interfészekből és enumokból áll, amelyek lehetővé teszik az elemek funkcionális stílusú műveleteit. A streamet a java.util.stream csomag importálásával használhatja.


A Stream a következő funkciókat kínálja:

  • A Stream nem tárol elemeket. Egyszerűen egy forrásból, például adatstruktúrából, tömbből vagy I/O csatornából származó elemeket továbbít, számítási műveletek csővezetékén keresztül.
  • A Stream funkcionális jellegű. Az adatfolyamon végrehajtott műveletek nem módosítják annak forrását. Például egy gyűjteményből származó adatfolyam szűrése új adatfolyamot hoz létre a szűrt elemek nélkül, ahelyett, hogy eltávolítaná az elemeket a forrásgyűjteményből.
  • A Stream lusta, és csak szükség esetén értékeli ki a kódot.
  • A patak elemeit a folyam élete során csak egyszer látogatják meg. Az Iterátorhoz hasonlóan új adatfolyamot kell létrehozni a forrás ugyanazon elemeinek újralátogatásához.

A stream segítségével szűrhetünk, gyűjthetünk, nyomtathatunk, konvertálhatunk egyik adatstruktúrából a másikba stb. A következő példákban különféle műveleteket alkalmazunk a stream segítségével.

Java Stream Interface Methods

Mód Leírás
logikai allMatch (predikátum predikátum) Visszaadja ennek az adatfolyamnak az összes olyan elemét, amely megfelel a megadott predikátumnak. Ha az adatfolyam üres, akkor igazat ad vissza, és a predikátum nem kerül kiértékelésre.
logikai anyMatch (predikátum predikátum) Az adatfolyam bármely olyan elemét adja vissza, amely megfelel a megadott predikátumnak. Ha az adatfolyam üres, akkor false értéket ad vissza, és a predikátum nem kerül kiértékelésre.
statikus Stream.Builder builder() Visszaad egy építőt az adatfolyamhoz.
R gyűjtő (gyűjtőgyűjtő) Ennek a folyamnak az elemein módosítható redukciós műveletet hajt végre egy Collector segítségével. A Collector beágyazza a gyűjtéshez argumentumként használt függvényeket (Beszállító, BiConsumer, BiConsumer), lehetővé téve a gyűjtési stratégiák újrafelhasználását és a gyűjtési műveletek összeállítását, például többszintű csoportosítást vagy particionálást.
R collection (Beszállítói szállító, BiConsumer akkumulátor, BiConsumer kombináló) Ennek a folyamnak az elemein módosítható redukciós műveletet hajt végre. A módosítható redukció olyan, amelyben a csökkentett érték egy módosítható eredménytároló, például egy ArrayList, és az elemeket az eredmény állapotának frissítése, nem pedig az eredmény cseréje révén építi be.
statikus Stream concat (A adatfolyam, b adatfolyam) Létrehoz egy lustán összefűzött adatfolyamot, amelynek elemei az első folyam összes eleme, amelyet a második folyam összes eleme követ. Az eredményül kapott adatfolyam rendezett, ha mindkét bemeneti adatfolyam rendezett, és párhuzamos, ha bármelyik bemeneti folyam párhuzamos. Amikor az eredményül kapott adatfolyamot lezárjuk, mindkét bemeneti adatfolyam bezárási kezelője meghívásra kerül.
hosszú számolás () Az adatfolyam elemeinek számát adja vissza. Ez a csökkentés speciális esete.
Stream different() Egy olyan adatfolyamot ad vissza, amely ennek az adatfolyamnak az eltérő elemeiből áll (az Object.equals(Object) szerint).
statikus adatfolyam üres () Üres szekvenciális adatfolyamot ad vissza.
Streamszűrő (predikátum predikátum) Egy adatfolyamot ad vissza, amely ennek az adatfolyamnak az adott predikátumnak megfelelő elemeiből áll.
Opcionális FindAny() Egy Opcionális értéket ad vissza, amely leírja az adatfolyam valamely elemét, vagy egy üres opcionális értéket, ha az adatfolyam üres.
Opcionális findFirst() Egy Opcionális értéket ad vissza, amely leírja ennek az adatfolyamnak az első elemét, vagy egy üres opcionális értéket, ha az adatfolyam üres. Ha az adatfolyamnak nincs találkozási sorrendje, akkor bármely elem visszaküldhető.
Stream flatMap (Funkciótérképező) Egy adatfolyamot ad vissza, amely az adatfolyam minden elemének egy olyan leképezett adatfolyam tartalmával való cseréjéből áll, amelyet a megadott leképezési függvény minden elemre történő alkalmazásával állítanak elő. Minden egyes leképezett adatfolyam bezárul, miután a tartalom ebbe az adatfolyamba került. (Ha egy leképezett adatfolyam nulla, akkor a rendszer üres adatfolyamot használ helyette.)
DoubleStream flatMapToDouble (függvényleképező) Egy DoubleStream-et ad vissza, amely az adatfolyam minden elemének egy olyan leképezett adatfolyam tartalmára cserélésének eredményét tartalmazza, amelyet a megadott leképezési függvény minden elemre történő alkalmazásával állítanak elő. Minden leképezett adatfolyam bezárul, miután a tartalom ebbe az adatfolyamba került. (Ha egy leképezett adatfolyam nulla, akkor a rendszer üres adatfolyamot használ helyette.)
IntStream flatMapToInt (függvényleképező) Egy IntStream-et ad vissza, amely az adatfolyam minden elemének egy leképezett adatfolyam tartalmára cserélésének eredményeiből áll, amelyet a megadott leképezési függvény minden elemre történő alkalmazásával állítottak elő. Minden egyes leképezett adatfolyam bezárul, miután a tartalom ebbe az adatfolyamba került. (Ha egy leképezett adatfolyam nulla, akkor a rendszer üres adatfolyamot használ helyette.)
LongStream flatMapTo Long (függvényleképező) Egy LongStream-et ad vissza, amely az adatfolyam minden elemének lecserélésének eredményét tartalmazza egy leképezett adatfolyam tartalmával, amelyet a megadott leképezési függvény minden elemre történő alkalmazásával állítanak elő. Minden egyes leképezett adatfolyam bezárul, miután a tartalom ebbe az adatfolyamba került. (Ha egy leképezett adatfolyam nulla, akkor a rendszer üres adatfolyamot használ helyette.)
érvénytelen forEach (fogyasztói intézkedés) Ennek az adatfolyamnak minden eleméhez végrehajt egy műveletet.
érvénytelen forEachOrdered (fogyasztói intézkedés) Ennek az adatfolyamnak minden elemére végrehajt egy műveletet, az adatfolyam találkozási sorrendjében, ha az adatfolyamnak meghatározott találkozási sorrendje van.
statikus adatfolyam generálása (szállítók) Egy végtelen szekvenciális rendezetlen adatfolyamot ad vissza, ahol minden elemet a biztosított szállító generál. Ez alkalmas állandó folyamok, véletlenszerű elemek folyamainak stb. generálására.
statikus adatfolyam iteráció (T seed, UnaryOperator f) Egy f függvény iteratív alkalmazásával előállított végtelen szekvenciális rendezett adatfolyamot ad vissza egy kezdeti elemmaghoz, és egy adatfolyamot hoz létre, amely magból, f(mag), f(f(mag)) stb.
Streamkorlát (hosszú max. méret) Egy adatfolyamot ad vissza, amely ennek az adatfolyamnak az elemeiből áll, úgy csonkolva, hogy az ne legyen hosszabb maxSize-nél.
Adatfolyam térkép (Funkciótérképező) Egy adatfolyamot ad vissza, amely az adott függvény ennek az adatfolyamnak az elemeire történő alkalmazásának eredményeiből áll.
DoubleStream térképToDouble (ToDoubleFunction leképező) Egy DoubleStream-et ad vissza, amely az adott függvény folyam elemeire történő alkalmazásának eredményeiből áll.
IntStream mapToInt(ToIntFunction leképező) Egy IntStream-et ad vissza, amely az adott függvény folyam elemeire történő alkalmazásának eredményeiből áll.
LongStream térképToLong (ToLongFunction leképező) Egy LongStream-et ad vissza, amely az adott függvény folyam elemeire történő alkalmazásának eredményeiből áll.
Opcionális max (összehasonlító) Ennek az adatfolyamnak a maximális elemét adja vissza a megadott Comparator szerint. Ez a csökkentés speciális esete.
Opcionális min (összehasonlító) Ennek az adatfolyamnak a minimális elemét adja vissza a megadott Comparator szerint. Ez a csökkentés speciális esete.
logikai noneMatch(Predikátum predikátum) Ennek az adatfolyamnak az elemeit adja vissza, amelyek megegyeznek a megadott predikátummal. Ha az adatfolyam üres, akkor igazat ad vissza, és a predikátum nem kerül kiértékelésre.
@SafeVarargs statikus adatfolyam (T... értékek) Egy szekvenciális rendezett adatfolyamot ad vissza, amelynek elemei a megadott értékek.
statikus adatfolyam (T t) Egyetlen elemet tartalmazó szekvenciális adatfolyamot ad vissza.
Stream betekintés (fogyasztói akció) Egy adatfolyamot ad vissza, amely ennek az adatfolyamnak az elemeiből áll, és emellett végrehajtja a megadott műveletet minden egyes elemen, amint a kapott adatfolyam elemei felhasználásra kerülnek.
Opcionális csökkentés (BinaryOperator akkumulátor) Ennek az adatfolyamnak az elemein redukciót hajt végre egy asszociatív felhalmozási függvény használatával, és egy Opcionális értéket ad vissza, amely leírja a csökkentett értéket, ha van ilyen.
T redukció (T azonosság, BinaryOperator akkumulátor) Ennek az adatfolyamnak az elemein redukciót hajt végre a megadott identitásérték és egy asszociatív felhalmozási függvény segítségével, és visszaadja a csökkentett értéket.
U-csökkentés (U-azonosság, BiFunction-akkumulátor, BinaryOperator kombináló) Ennek az adatfolyamnak az elemein redukciót hajt végre a megadott identitás, felhalmozás és kombináló funkciók felhasználásával.
Stream kihagyása (hosszú n) Egy adatfolyamot ad vissza, amely ennek az adatfolyamnak a fennmaradó elemeiből áll, miután elvetette az adatfolyam első n elemét. Ha ez az adatfolyam kevesebb mint n elemet tartalmaz, akkor a rendszer egy üres adatfolyamot ad vissza.
Stream rendezve() Egy adatfolyamot ad vissza, amely ennek az adatfolyamnak az elemeiből áll, természetes sorrend szerint rendezve. Ha ennek az adatfolyamnak az elemei nem összehasonlíthatók, a terminálművelet végrehajtásakor egy java.lang.ClassCastException parancs jelenhet meg.
Adatfolyam rendezve (összehasonlító) Egy adatfolyamot ad vissza, amely ennek az adatfolyamnak az elemeiből áll, a megadott Összehasonlító szerint rendezve.
Object[] toArray() Egy tömböt ad vissza, amely ennek az adatfolyamnak az elemeit tartalmazza.
A[] toArray (IntFunction generátor) Egy tömböt ad vissza, amely ennek az adatfolyamnak az elemeit tartalmazza, a megadott generátor függvény segítségével lefoglalja a visszaadott tömböt, valamint minden további tömböt, amelyre szükség lehet a particionált végrehajtáshoz vagy az átméretezéshez.

Java példa: Gyűjtemény szűrése Stream használata nélkül

A következő példában adatfolyam használata nélkül szűrjük az adatokat. Ezt a megközelítést a stream csomag kiadása előtt használtuk.

imessage játékok androidra
 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){>

Java Stream példa: Gyűjtemény szűrése a Stream használatával

Itt az adatfolyam használatával szűrjük az adatokat. Láthatja, hogy a kód optimalizálva és karbantartva van. A Stream gyors végrehajtást biztosít.

 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); } } 

Kimenet:

 [90000.0] 

Java adatfolyam iterációs példa

A stream segítségével tetszőleges számú ismétlést végezhet. A Stream előre meghatározott módszereket biztosít az Ön által megvalósított logika kezelésére. A következő példában iterálunk, szűrünk, és átmentünk egy korlátot az iteráció javítására.

 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); } } 

Kimenet:

 5 10 15 20 25 

Java adatfolyam példa: Szűrő és iteráló gyűjtemény

A következő példában a filter() metódust használjuk. Itt láthatja, hogy a kód optimalizált és nagyon tömör.

 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)); } } 

Kimenet:

 Dell Laptop 

Java Stream Példa: Reduction() Method in Collection

Ez a módszer a bemeneti elemek sorozatát veszi fel, és ismételt művelettel egyetlen összefoglaló eredménybe egyesíti őket. Például számok összegének megtalálása, vagy elemek listába gyűjtése.

A következő példában a Reduction() metódust használjuk, amely az összes termék árának összegzésére szolgál.

 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); } } 

Kimenet:

 201000.0 201000.0 

Java adatfolyam példa: Összegzés a Collectors Methods használatával

Gyűjtőket is használhatunk számértékek összegének kiszámításához. A következő példában a Collectors osztályt és annak meghatározott metódusait használjuk az összes termékár összegének kiszámításához.

 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); } } 

Kimenet:

 201000.0 

Java Stream példa: Keresse meg a termék maximális és minimális árát

A következő példa a stream használatával megtalálja a termék minimális és maximális árát. Kényelmes módot kínál az értékek megtalálására, kötelező megközelítés alkalmazása nélkül.

 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); } } 

Kimenet:

 90000.0 25000.0 

Java Stream példa: count() Method in Collection

 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)>

stream lehetővé teszi az eredmények összegyűjtését bármilyen formában. Az eredményt halmazként, listán vagy térképként kaphatja meg, és manipulálhatja az elemeket.


Java Stream példa: Konvertálja a listát készletté

 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); } } 

Kimenet:

 [25000.0, 28000.0] 

Java Stream példa: Konvertálja a listát térképpé

 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); } } 

Kimenet:

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

Módszerreferencia adatfolyamban

 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); } } 

Kimenet:

 [90000.0]