Java adatfolyamok kezdőknek: Bevezetés a folyamok használatába Java nyelven

Java adatfolyamok kezdőknek: Bevezetés a folyamok használatába Java nyelven

A Java 8 adatfolyamok lehetővé teszik a fejlesztők számára, hogy előre meghatározott műveletek segítségével pontos adatokat nyerjenek ki egy nagy gyűjteményből.





A Java 8 megjelenése előtt a „stream” kifejezés használata a Java -ban automatikusan az I/O -hoz társul. A Java 8 azonban bevezetett egy adatfolyamot, amely számítási lépések halmazának nevezhető.





Ez a cikk bemutatja a Java 8 adatfolyamokat, és bemutatja, hogyan lehetnek hasznosak a projektekben.





Mi az a Stream?

A folyam egy Java felület, amely forrást vesz fel, műveletek sorát hajtja végre bizonyos adatok kinyerésére, majd ezeket az adatokat biztosítja az alkalmazás számára. Lényegében lehetővé teszi speciális adatok kinyerését az általánosított adatok gyűjteményéből.

Hogyan működnek a streamek?

Egy adatfolyam mindig egy forrással kezdődik. A forrás típusa a kezelt adatok típusától függ, de a népszerűbbek közül kettő a tömbök és gyűjtemények.



A gyűjtemény kezdeti folyammá alakításához hozzá kell adnia a folyam() funkciót a forráshoz. Ez a forrást a folyamvezetékbe helyezi, ahol több különböző köztes művelet (pl szűrő() és fajta() ) operálhat.

Miután elvégezte az összes szükséges köztes műveletet, bevezethet egy terminálműveletet (pl az egyes() ), amely előállítja a forrásból korábban kivont adatokat.





Élet patakok nélkül

A Java 8 2014 -ben jelent meg, de előtte a Java fejlesztőknek még speciális adatokat kellett kivonniuk az általános adatok gyűjteményéből.

hogyan rögzítsük a bejegyzéseket a Facebookon

Tegyük fel, hogy van egy véletlenszerű karakterek listája, amelyek véletlen számokkal kombinálva egyedi karakterlánc -értékeket alkotnak, de csak azokat az értékeket szeretné, amelyek a C karakterrel kezdődnek, és az eredményt növekvő sorrendbe szeretné rendezni. Így nyerheti ki az adatokat adatfolyamok nélkül.





Összefüggő: Mit kell tudni a karakterláncok használatáról a Java -ban

Példa értékek szűrésére és rendezésére patakok nélkül


import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List randomValues = Arrays.asList(
'E11', 'D12', 'A13', 'F14', 'C15', 'A16',
'B11', 'B12', 'C13', 'B14', 'B15', 'B16',
'F12', 'E13', 'C11', 'C14', 'A15', 'C16',
'F11', 'C12', 'D13', 'E14', 'D15', 'D16'
);
//declare the array list will store needed values
List requiredValues = new ArrayList();
//extracting the required values and storing them in reqquiredValues
randomValues.forEach(value -> {
if(value.startsWith('C')) {
requiredValues.add(value);
}
});
//sort the requiredValues in ascending order
requiredValues.sort((String value1, String value2) -> value1.compareTo(value2));
//print each value to the console
requiredValues.forEach((String value) -> System.out.println(value));
}
}

Azt is deklarálnia és inicializálnia kell a tömblistát, függetlenül attól, hogy adatfolyamokat vagy más kinyerési módot használ. Amit nem kellene tennie, ha adatfolyamokat használna, az új változó deklarálása a szükséges értékek megtartásához, és a fenti példában a másik öt plusz kódsor létrehozása sem.

Összefüggő: Műveletek létrehozása és végrehajtása tömbökön Java -ban

A fenti kód a következő kimenetet eredményezi a konzolban:


C11
C12
C13
C14
C15
C16

Élet patakokkal

A programozás során a hatékonyság azt jelenti, hogy ugyanazt az eredményt érjük el lényegesen kevesebb kóddal. A stream -folyamat pontosan ezt teszi a programozók számára. Tehát a következő alkalommal, amikor valaki megkérdezi: miért fontos a streameket használni a projektben? Egyszerűen fogalmazva: a folyamok támogatják a hatékony programozást.

Folytatva a fenti példánkat, a streamek bevezetése így alakítja át az egész programot.

Értékek szűrése és rendezése folyam példával


import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List randomValues = Arrays.asList(
'E11', 'D12', 'A13', 'F14', 'C15', 'A16',
'B11', 'B12', 'C13', 'B14', 'B15', 'B16',
'F12', 'E13', 'C11', 'C14', 'A15', 'C16',
'F11', 'C12', 'D13', 'E14', 'D15', 'D16'
);
//retrieves only values that start with C, sort them, and print them to the console.
randomValues.stream().filter(value->value.startsWith('C')).sorted().forEach(System.out::println);
}
}

A fenti kód bemutatja, hogy a stream felület milyen erős. Összeállítja a véletlen tömbértékek listáját, és a folyam() funkció. Az adatfolyam ezután tömblistára lesz redukálva, amely tartalmazza a szükséges értékeket (ez az összes kezdőbetűs érték C ), használni a szűrő() funkció.

Amint a fenti példában látható, a C az értékek véletlenszerűen vannak elrendezve a tömblistában. Ha ki szeretné nyomtatni a folyamot a folyamat ezen pontján, akkor az értéket C15 először nyomtatnák ki. Ezért a fajta() függvényt vezetik be az adatfolyamba, hogy növekvő sorrendben rendezze át az új tömböt.

A folyam végső funkciója a az egyes() funkció. Ez egy terminál funkció, amellyel le lehet állítani az adatfolyamot, és a következő eredményeket érheti el a konzolon:


C11
C12
C13
C14
C15
C16

Közvetített műveletek közvetítése

Van egy kiterjedt lista a közvetítő műveletekről, amelyeket egy folyamban lehet használni.

Egy adatfolyam mindig egyetlen forrásból indul, és a folyam() függvény, és mindig egyetlen terminálművelettel végződik (bár több különböző közül lehet választani.) De e két szakasz között van egy hat használható műveleti lista.

A fenti példánkban csak kettőt használunk ezekből a köztes műveletekből --- szűrő() és fajta() . A választott közbenső művelet az elvégzendő feladatoktól függ.

Ha a fenti tömblistánkban a C -vel kezdődő értékek bármelyike ​​kisbetűs lenne, és ugyanazokat a köztes műveleteket hajtanánk végre rajtuk, akkor a következő eredményt kapjuk.

Szűrési és rendezési műveletek végrehajtása kisbetűs értékeken Példa


import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List randomValues = Arrays.asList(
'E11', 'D12', 'A13', 'F14', 'C15', 'A16',
'B11', 'B12', 'c13', 'B14', 'B15', 'B16',
'F12', 'E13', 'C11', 'C14', 'A15', 'c16',
'F11', 'C12', 'D13', 'E14', 'D15', 'D16'
);
//retrieves only values that start with C, sort them, and print them to the console.
randomValues.stream().filter(value->value.startsWith('C')).sorted().forEach(System.out::println);
}
}

A fenti kód a következő értékeket eredményezi a konzolban:


C11
C12
C14
C15

Az egyetlen probléma a fenti kimenettel az, hogy nem pontosan ábrázolja az összeset C értékeket a tömblistánkban. Ennek a kis hibának a kijavítására jó módszer egy másik közbenső művelet bevezetése a folyamvezetékbe; ezt a műveletet a térkép() funkció.

Példa a térképfunkcióra


import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List randomValues = Arrays.asList(
'E11', 'D12', 'A13', 'F14', 'C15', 'A16',
'B11', 'B12', 'c13', 'B14', 'B15', 'B16',
'F12', 'E13', 'C11', 'C14', 'A15', 'c16',
'F11', 'C12', 'D13', 'E14', 'D15', 'D16'
);
//transforms all lower case characters to upper case,
//retrieves only values that start with C, sort them, and print them to the console.
randomValues.stream().map(String::toUpperCase).filter(value->value.startsWith('C')).sorted().forEach(System.out::println);
}
}

Az térkép() függvény átalakítja az objektumot egyik állapotból a másikba; a fenti példánkban a tömblista összes kisbetűjét nagybetűssé alakítja.

A elhelyezése térkép() funkció közvetlenül a szűrő() függvény lekéri az összes kezdődő értéket C a tömblistából.

A fenti kód a következő eredményt eredményezi a konzolon, sikeresen reprezentálva az összes C értékeket a tömblistában.


C11
C12
C13
C14
C15
C16

A másik három közbenső művelet, amelyet az alkalmazásokban használhat:

  • kandikál()
  • határ()
  • kihagyás ()

A Java 8 Streams megkönnyíti a hatékony kód létrehozását

A Java 8 adatfolyamokkal extra specifikus, releváns adatokat nyerhet ki egy nagy forrásból egyetlen kódsorral. Amíg belefoglalja a kezdőbetűt folyam() funkció és a terminál kezelője, akkor használhatja a köztes műveletek bármely kombinációját, amelyek illeszkedő kimeneteket biztosítanak a célhoz.

android auto nem működik az s9 -el

Ha kíváncsi a nálunk található kódsorra szűrő() funkció; „lambda kifejezésként” ismerik. A Lambda kifejezések egy másik, a Java 8 által bevezetett szolgáltatás, és sok olyan rögöt tartalmaz, amelyek hasznosak lehetnek.

Részvény Részvény Csipog Email Rövid bevezetés a Java 8 lambdába

Ha Ön Java programozó, és szeretne többet megtudni a Java 8 lambdákról, ebben a cikkben közelebbről megvizsgáljuk a lambda szintaxisát és használatát.

Olvassa tovább
Kapcsolódó témák
  • Programozás
  • Jáva
  • Kódolási oktatóanyagok
A szerzőről Kadeisha Kean(21 cikk megjelent)

Kadeisha Kean Full Stack szoftverfejlesztő és műszaki/technológiai író. Megvan az a képessége, hogy leegyszerűsítse a legösszetettebb technológiai fogalmakat; olyan anyagot állít elő, amelyet minden technológiai kezdő könnyen megért. Szenvedélyesen ír, érdekes szoftvereket fejleszt és utazik a világban (dokumentumfilmeken keresztül).

Bővebben: Kadeisha Kean

Iratkozzon fel hírlevelünkre

Csatlakozz hírlevelünkhöz, ahol technikai tippeket, értékeléseket, ingyenes e -könyveket és exkluzív ajánlatokat találsz!

Feliratkozáshoz kattintson ide