logo

Java 8 srautas

„Java“ pateikia naują papildomą „Java 8“ paketą, vadinamą java.util.stream. Šį paketą sudaro klasės, sąsajos ir enum, kad būtų galima atlikti funkcinio stiliaus operacijas su elementais. Galite naudoti srautą importuodami paketą java.util.stream.


Srautas siūlo šias funkcijas:

  • Srautas nesaugo elementų. Jis tiesiog perduoda elementus iš šaltinio, pvz., duomenų struktūros, masyvo arba I/O kanalo, per skaičiavimo operacijų konvejerį.
  • Srautas yra funkcinio pobūdžio. Sraute atliekamos operacijos nekeičia jo šaltinio. Pavyzdžiui, filtruojant srautą, gautą iš kolekcijos, sukuriamas naujas srautas be filtruotų elementų, o ne pašalinant elementus iš šaltinio rinkinio.
  • Srautas yra tingus ir įvertina kodą tik tada, kai reikia.
  • Upelio elementai aplankomi tik kartą per upelio gyvavimo laiką. Kaip ir Iteratorius, reikia sugeneruoti naują srautą, kad būtų galima pakartotinai peržiūrėti tuos pačius šaltinio elementus.

Naudodami srautą galite filtruoti, rinkti, spausdinti ir konvertuoti iš vienos duomenų struktūros į kitą ir pan. Toliau pateiktuose pavyzdžiuose srauto pagalba taikėme įvairias operacijas.

„Java Stream“ sąsajos metodai

Metodai apibūdinimas
loginis allMatch (predikatinis predikatas) Jis grąžina visus šio srauto elementus, atitinkančius pateiktą predikatą. Jei srautas tuščias, grąžinama tiesa, o predikatas neįvertinamas.
loginis anyMatch (predikatinis predikatas) Jis grąžina bet kurį šio srauto elementą, atitinkantį pateiktą predikatą. Jei srautas tuščias, grąžinama false ir predikatas neįvertinamas.
statinis Stream.Builder kūrimo priemonė() Tai grąžina srauto kūrėją.
R kolektorius (kolektorius) Jis atlieka šio srauto elementų kintamą mažinimo operaciją, naudodamas rinktuvą. Kolektorius apima funkcijas, naudojamas kaip rinkimo argumentai (tiekėjas, vartotojas, bivartotojas, vartotojas), leidžiantis pakartotinai naudoti rinkimo strategijas ir rinkimo operacijas, pvz., kelių lygių grupavimą ar skaidymą.
R collection (tiekėjo tiekėjas, „BiConsumer“ akumuliatorius, „BiConsumer“ kombinatorius) Jis atlieka šio srauto elementų kintamą mažinimo operaciją. Keičiamas sumažinimas yra toks, kai sumažinta reikšmė yra kintamo rezultato konteineris, pvz., ArrayList, o elementai įtraukiami atnaujinant rezultato būseną, o ne pakeičiant rezultatą.
statinis srautas (srautas a, srautas b) Tai sukuria tingiai sujungtą srautą, kurio elementai yra visi pirmojo srauto elementai, po kurių seka visi antrojo srauto elementai. Gautas srautas yra sutvarkytas, jei abu įvesties srautai yra išdėstyti, ir lygiagretus, jei kuris nors iš įvesties srautų yra lygiagretus. Kai gautas srautas uždaromas, iškviečiamos abiejų įvesties srautų uždarymo tvarkyklės.
ilgas skaičius () Jis grąžina elementų skaičių šiame sraute. Tai ypatingas sumažinimo atvejis.
Srautas atskiras() Jis grąžina srautą, susidedantį iš skirtingų šio srauto elementų (pagal Object.equals(Object)).
statinis srautas tuščias () Jis grąžina tuščią nuoseklų srautą.
Srauto filtras (predikatas) Jis grąžina srautą, sudarytą iš šio srauto elementų, atitinkančių nurodytą predikatą.
Neprivaloma rasti bet() Jis grąžina Pasirenkamą, apibūdinantį tam tikrą srauto elementą, arba tuščią Pasirenkamą, jei srautas tuščias.
Neprivaloma findFirst () Jis grąžina Pasirenkamą, aprašantį pirmąjį šio srauto elementą, arba tuščią Pasirenkamą, jei srautas tuščias. Jei sraute nėra susidūrimo tvarkos, gali būti grąžintas bet koks elementas.
Srautas flatMap (Funkcijakartografas) Jis grąžina srautą, kurį sudaro kiekvieno šio srauto elemento pakeitimas susieto srauto turiniu, gautu kiekvienam elementui pritaikius pateiktą atvaizdavimo funkciją. Kiekvienas susietas srautas uždaromas, kai jo turinys įtraukiamas į šį srautą. (Jei susietas srautas yra nulinis, naudojamas tuščias srautas.)
„DoubleStream flatMapToDouble“ (funkcijų sudarytojas) Jis grąžina „DoubleStream“, susidedantį iš kiekvieno šio srauto elemento pakeitimo susieto srauto, sukurto kiekvienam elementui pritaikius pateiktą susiejimo funkciją, turiniu. Kiekvienas susietas srautas uždaromas po to, kai jo turinys patenka į šį srautą. (Jei susietas srautas yra nulinis, naudojamas tuščias srautas.)
„IntStream flatMapToInt“ (funkcijų sudarytojas) Jis grąžina „IntStream“, susidedantį iš kiekvieno šio srauto elemento pakeitimo susieto srauto, sukurto kiekvienam elementui pritaikius pateiktą susiejimo funkciją, turiniu. Kiekvienas susietas srautas uždaromas, kai jo turinys įtraukiamas į šį srautą. (Jei susietas srautas yra nulinis, naudojamas tuščias srautas.)
„LongStream flatMapToLong“ (funkcijų sudarytojas) Jis grąžina „LongStream“, susidedantį iš kiekvieno šio srauto elemento pakeitimo susieto srauto, sukurto kiekvienam elementui pritaikius pateiktą atvaizdavimo funkciją, turiniu. Kiekvienas susietas srautas uždaromas, kai jo turinys įtraukiamas į šį srautą. (Jei susietas srautas yra nulinis, naudojamas tuščias srautas.)
negalioja kiekvienam (vartotojo veiksmas) Jis atlieka veiksmą kiekvienam šio srauto elementui.
negalioja už kiekvieną užsakymą (vartotojo veiksmas) Jis atlieka veiksmą kiekvienam šio srauto elementui srauto susidūrimo tvarka, jei srautas turi apibrėžtą susidūrimo tvarką.
statinio srauto generavimas (tiekėjos) Jis grąžina begalinį nuoseklų netvarkingą srautą, kuriame kiekvieną elementą generuoja pateiktas Tiekėjas. Tai tinka generuoti pastovius srautus, atsitiktinių elementų srautus ir kt.
statinis srauto kartojimas (T sėkla, UnaryOperator f) Jis grąžina begalinį nuoseklų srautą, gautą kartotiniu būdu pritaikius funkciją f pradiniam elemento pradiniam elementui, sudarydamas srautą, kurį sudaro sėkla, f (seed), f (f (seed)) ir kt.
Srauto limitas (ilgas maksimalus dydis) Jis grąžina srautą, kurį sudaro šio srauto elementai, sutrumpinti iki maxSize ilgio.
Srauto žemėlapis (funkcijų žemėlapis) Jis grąžina srautą, kurį sudaro duotosios funkcijos taikymo šio srauto elementams rezultatai.
„DoubleStream“ žemėlapis „ToDouble“ („ToDoubleFunction“ žemėlapis) Jis grąžina „DoubleStream“, kurį sudaro nurodytos funkcijos taikymo šio srauto elementams rezultatai.
IntStream mapToInt (ToIntFunction žemėlapio sudarytojas) Jis grąžina IntStream, kurį sudaro nurodytos funkcijos taikymo šio srauto elementams rezultatai.
LongStream žemėlapisToLong (ToLongFunction kartografas) Jis grąžina LongStream, kurį sudaro duotosios funkcijos taikymo šio srauto elementams rezultatai.
Pasirenkamas maks. (palyginimo priemonė) Jis grąžina didžiausią šio srauto elementą pagal pateiktą palyginimo priemonę. Tai ypatingas sumažinimo atvejis.
Pasirenkama min (palyginimo priemonė) Jis grąžina minimalų šio srauto elementą pagal pateiktą palyginimo priemonę. Tai ypatingas sumažinimo atvejis.
loginis noneMatch (predikatinis predikatas) Jis grąžina šio srauto elementus, atitinkančius pateiktą predikatą. Jei srautas tuščias, grąžinama tiesa, o predikatas neįvertinamas.
@SafeVarargs statinis srautas (T... reikšmės) Jis grąžina nuoseklų sutvarkytą srautą, kurio elementai yra nurodytos reikšmės.
statinis srautas (T t) Jis grąžina nuoseklų srautą, kuriame yra vienas elementas.
Žvilgsnis į srautą (vartotojų veiksmai) Jis grąžina srautą, susidedantį iš šio srauto elementų, papildomai atlikdamas numatytą veiksmą su kiekvienu elementu, nes elementai sunaudojami iš gauto srauto.
Pasirenkamas sumažinimas (BinaryOperator akumuliatorius) Jis sumažina šio srauto elementus, naudodamas asociatyviąją kaupimo funkciją, ir grąžina Neprivaloma, apibūdinančią sumažintą reikšmę, jei tokia yra.
T sumažinti (T tapatybė, „BinaryOperator“ akumuliatorius) Jis sumažina šio srauto elementus, naudodamas pateiktą tapatybės reikšmę ir asociatyviąją kaupimo funkciją, ir grąžina sumažintą reikšmę.
U sumažinimas (U tapatybė, BiFunction akumuliatorius, BinaryOperator jungiklis) Jis atlieka šio srauto elementų redukciją, naudodamas suteiktą tapatybę, kaupimo ir derinimo funkcijas.
Praleisti srautą (ilgas n) Jis grąžina srautą, susidedantį iš likusių šio srauto elementų, atmetus pirmuosius n srauto elementų. Jei šiame sraute yra mažiau nei n elementų, bus grąžintas tuščias srautas.
Srautas surūšiuotas () Jis pateikia srautą, kurį sudaro šio srauto elementai, surūšiuoti pagal natūralią tvarką. Jei šio srauto elementai nėra palyginami, gali būti išmestas java.lang.ClassCastException, kai vykdoma terminalo operacija.
Srautas surūšiuotas (palyginimo priemonė) Jis pateikia srautą, kurį sudaro šio srauto elementai, surūšiuoti pagal pateiktą palyginimo priemonę.
Objektas[] toArray() Jis grąžina masyvą, kuriame yra šio srauto elementai.
A[] toArray (IntFunction generatorius) Jis grąžina masyvą, kuriame yra šio srauto elementai, naudodamas pateiktą generatoriaus funkciją, kad paskirstytų grąžintą masyvą, taip pat bet kokius papildomus masyvus, kurių gali prireikti suskaidytam vykdymui arba norint pakeisti dydį.

Java pavyzdys: kolekcijos filtravimas nenaudojant srauto

Šiame pavyzdyje duomenis filtruojame nenaudodami srauto. Šį metodą naudojome prieš išleidžiant srauto paketą.

python generuoti uuid
 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“ pavyzdys: rinkinio filtravimas naudojant srautą

Čia mes filtruojame duomenis naudodami srautą. Matote, kad kodas optimizuotas ir prižiūrimas. Srautas užtikrina greitą vykdymą.

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

Išvestis:

 [90000.0] 

„Java Stream“ kartojimo pavyzdys

Galite naudoti srautą, kad kartotumėte bet kokį skaičių kartų. Srautas pateikia iš anksto nustatytus metodus, kaip susidoroti su įdiegta logika. Šiame pavyzdyje mes kartojame, filtruojame ir peržengėme ribą, kad ištaisytume iteraciją.

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

Išvestis:

 5 10 15 20 25 

„Java Stream“ pavyzdys: filtravimo ir kartojimo kolekcija

Šiame pavyzdyje mes naudojame filtro () metodą. Čia galite pamatyti, kad kodas yra optimizuotas ir labai glaustas.

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

Išvestis:

 Dell Laptop 

„Java Stream“ pavyzdys: sumažinti () metodas kolekcijoje

Šis metodas paima įvesties elementų seką ir pakartotinai veikiant sujungia juos į vieną suvestinį rezultatą. Pavyzdžiui, skaičių sumos radimas arba elementų kaupimas sąraše.

Šiame pavyzdyje mes naudojame mažinimo () metodą, kuris naudojamas visų produktų kainoms susumuoti.

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

Išvestis:

 201000.0 201000.0 

„Java Stream“ pavyzdys: Sumuokite naudodami „Collectors Methods“.

Taip pat galime naudoti kolektorius skaitinių reikšmių sumai apskaičiuoti. Šiame pavyzdyje mes naudojame Collectors klasę ir jos nurodytus metodus visų produktų kainų sumai apskaičiuoti.

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

Išvestis:

 201000.0 

„Java Stream“ pavyzdys: Raskite maksimalią ir minimalią produkto kainą

Toliau pateiktame pavyzdyje randama minimali ir maksimali produkto kaina naudojant srautą. Tai suteikia patogų būdą rasti vertybes nenaudojant būtinojo požiūrio.

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

Išvestis:

 90000.0 25000.0 

Java srauto pavyzdys: count() metodas kolekcijoje

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

srautas leidžia rinkti rezultatus bet kokiomis įvairiomis formomis. Galite gauti rezultatą kaip rinkinį, sąrašą ar žemėlapį ir galite manipuliuoti elementais.


„Java“ srauto pavyzdys: konvertuokite sąrašą į rinkinį

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

Išvestis:

 [25000.0, 28000.0] 

„Java Stream“ pavyzdys: paverskite sąrašą į žemėlapį

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

Išvestis:

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

Metodo nuoroda sraute

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

Išvestis:

 [90000.0]