Upravljanje i uklanjanje stavke iz streama

1. Pregled

U ovom brzom vodiču naučit ćemo o raznim načinima na koje možemo raditi s stavkom u Java 8 streamu, a zatim je ukloniti kad operacija završi.

2. Postavljanje

Definirajmo svoje Artikal prvo objekt. Ovo je jednostavan objekt s jednim int polje.

Ima metodu koja određuje je li objekt kvalificiran za rad, na temelju interne vrijednosti:

Predmet klase {private int value; // konstruktori public boolean isQualified () {povratna vrijednost% 2 == 0; } public void operirati () {System.out.println ("Parni broj"); }}

Sada možemo stvoriti izvor za naše Stream koja može biti zbirka Predmeti:

Popis itemList = novi ArrayList (); za (int i = 0; i <10; i ++) {itemList.add (nova stavka (i)); }

3. Filtriranje predmeta

U mnogim slučajevima, ako želimo učiniti nešto sa podskupom stavki, možemo koristiti Filter # streama metodu i ne moramo prvo ništa ukloniti:

itemList.stream () .filter (item -> item.isQualified ()) ...

4. Rukovanje i uklanjanje predmeta

4.1. Collection.removeIf

Možemo koristiti Potoci ponoviti i operirati prikupljanje Predmeti.

Koristeći Potoci, možemo primijeniti lambda funkcije poznate kao Predikati. Da biste pročitali više o Potoci i Predikati, ovdje imamo još jedan članak.

Možemo stvoriti Predikat to bi utvrdilo da li an Artikal kvalificiran za operaciju:

Predikat isQualified = item -> item.isQualified ();

Naše Predikat filtrirat će Predmeti koje želimo operirati:

itemList.stream () .filter (isQualified) .forEach (item -> item.operate ());

Kad završimo s radom na stavkama u streamu, možemo ih ukloniti pomoću istih Predikat koristili smo ranije za filtriranje:

itemList.removeIf (isQualified);

Interno, ukloniAko koristi an Iterator za itiranje po popisu i podudaranje elemenata pomoću predikata. Sada možemo ukloniti sve odgovarajuće elemente s popisa.

4.2. Collection.removeAll

Također možemo koristiti drugi popis da držimo elemente koji su operirani, a zatim ih uklonimo s izvornog popisa:

Popis OperaList = novi ArrayList (); itemList.stream () .filter (item -> item.isQualified ()) .forEach (item -> {item.operate (); operateList.add (item);}); itemList.removeAll (operiraniList);

Za razliku od ukloniAko koji koristi Iterator, ukloniti sve koristi jednostavan za-petlju da biste uklonili sve odgovarajuće elemente s popisa.

5. Zaključak

U ovom smo članku pogledali način rada na stavci u Java 8 Streams, a zatim njezino uklanjanje. Također smo vidjeli način kako to učiniti pomoću dodatnog popisa i uklanjanjem svih podudarnih elemenata.

Izvorni kôd ovog vodiča i relevantni testovi dostupni su na GitHub-u.


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