Elem működtetése és eltávolítása az adatfolyamból
1. Áttekintés
Ebben a gyors bemutatóban megismerhetjük a Java 8 adatfolyamban lévő elem működtetésének különböző módjait, majd a művelet befejezése után eltávolíthatjuk azokat.
2. Beállítás
Határozzuk meg a mi Tétel előbb a tárgy. Ez egy egyszerű objektum egyetlen int terület.
Van egy módszere, amely a belső érték alapján meghatározza, hogy az objektum alkalmas-e a működésre:
osztály Tétel {private int value; // konstruktorok nyilvános logikai értéke isQualified () {return value% 2 == 0; } public void operation () {System.out.println ("Páros szám"); }}
Most létrehozhatunk egy forrást a sajátunk számára Folyam amely gyűjteménye lehet Tételek:
List itemList = new ArrayList (); for (int i = 0; i <10; i ++) {itemList.add (új (i) tétel); }
3. Az elemek szűrése
Sok esetben, ha valamit meg akarunk tenni az elemek egy részével, használhatjuk a Stream # szűrő módszerrel, és először nem kell semmit eltávolítanunk:
itemList.stream () .filter (item -> item.isQualified ()) ...
4. Tárgy kezelése és eltávolítása
4.1. Gyűjtemény.removeIf
Tudjuk használni Patakok iterálni és működtetni a gyűjteményt Tételek.
Használata Patakok, alkalmazhatjuk az úgynevezett lambda függvényeket Jóslatok. Ha többet szeretne megtudni erről Patakok és Jóslatok, van itt egy másik cikkünk.
Hozhatunk létre a Állítmány ez meghatározná, ha egy Tétel üzemeltethető:
Predikátum isQualified = item -> item.isQualified ();
A mi Állítmány leszűrni a Tételek hogy meg akarjuk operálni:
itemList.stream () .filter (isQualified) .forEach (item -> item.operate ());
Miután befejeztük a falon lévő elemek működését, ugyanezzel a művelettel eltávolíthatjuk őket Állítmány korábban használtuk a szűréshez:
itemList.removeIf (isQualified);
Belsőleg, removeIf használ egy Iterátor hogy a lista fölött iteráljon, és az állítókat felhasználva illessze az elemeket. Most eltávolíthatunk minden megfelelő elemet a listáról.
4.2. Collection.removeAll
Használhatunk egy másik listát is a működtetett elemek megtartására, majd az eredeti listáról való eltávolításukra:
List működtetett lista = új ArrayList (); itemList.stream () .filter (item -> item.isQualified ()) .forEach (item -> {item.operate (); üzemeltetettList.add (elem);}); itemList.removeAll (működtetett lista);
nem úgy mint removeIf Iterátort használ, összes eltávolítása használ egy egyszerű for-loop hogy eltávolítsa a lista összes megfelelő elemét.
5. Következtetés
Ebben a cikkben megvizsgáltuk a Java 8 adatfolyamok elemének működését, majd eltávolítását. Láttuk azt is, hogy ezt megtehetjük egy további lista felhasználásával és az összes egyező elem eltávolításával.
Az oktatóanyag és a vonatkozó tesztesetek forráskódja elérhető a GitHub oldalon.