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.


$config[zx-auto] not found$config[zx-overlay] not found