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.