API zavirivanja Java 8 Streams ()

1. Uvod

API Java Stream uvodi nas u moćnu alternativu za obradu podataka.

U ovom kratkom vodiču usredotočit ćemo se na zaviriti (), često pogrešno shvaćena metoda.

2. Brzi primjer

Uprljajmo ruke i pokušajmo koristiti zaviriti (). Imamo tok imena i želimo ih ispisati na konzolu.

Od zaviriti () očekuje a Potrošač kao jedini argument čini se da se dobro uklapa, pa probajmo:

Stream nameStream = Stream.of ("Alice", "Bob", "Chuck"); nameStream.peek (System.out :: println);

Međutim, gornji isječak ne daje izlaz. Da bismo razumjeli zašto, napravimo kratko osvježavanje aspekata životnog ciklusa streama.

3. Srednje i terminalne operacije

Podsjetimo da tokovi imaju tri dijela: izvor podataka, nula ili više posrednih operacija i nula ili jedan terminal.

Izvor daje elemente cjevovodu.

Posredničke operacije dobivaju elemente jedan po jedan i obrađuju ih. Sve su srednje operacije lijene i kao rezultat toga, nikakve operacije neće imati učinka dok cjevovod ne počne raditi.

Terminalske operacije znače kraj životnog ciklusa toka. Što je najvažnije za naš scenarij, oni inicirati radove u cjevovodu.

4. zaviriti () Upotreba

Razlog zaviriti () nije uspjelo u našem prvom primjeru je to to je srednji i nismo primijenili a terminal operacija do cjevovoda. Alternativno, mogli smo koristiti za svakoga() istim argumentom za postizanje željenog ponašanja:

Stream nameStream = Stream.of ("Alice", "Bob", "Chuck"); nameStream.forEach (System.out :: println);

zaviriti ()"Javadoc stranica kaže:"Ova metoda postoji uglavnom za podršku ispravljanju pogrešaka, gdje želite vidjeti elemente kako prolaze kroz određenu točku cjevovoda“.

Razmotrimo ovaj isječak s iste Javadoc stranice:

Stream.of ("one", "two", "three", "four") .filter (e -> e.length ()> 3) .peek (e -> System.out.println ("Filtrirana vrijednost: "+ e)) .map (String :: toUpperCase) .peek (e -> System.out.println (" Mapirana vrijednost: "+ e)) .collect (Collectors.toList ());

Pokazuje kako promatramo elemente koji su prošli svaku operaciju.

Na vrhu toga, zaviriti () može biti korisno u drugom scenariju: kada želimo izmijeniti unutarnje stanje elementa. Na primjer, recimo da želimo pretvoriti sva korisnička imena u mala slova prije nego što ih ispišemo:

Stream userStream = Stream.of (novi korisnik ("Alice"), novi korisnik ("Bob"), novi korisnik ("Chuck")); userStream.peek (u -> u.setName (u.getName (). toLowerCase ())) .forEach (System.out :: println);

Alternativno, mogli smo koristiti karta(), ali zaviriti () je prikladnije jer ne želimo zamijeniti element.

5. Zaključak

U ovom kratkom vodiču vidjeli smo sažetak životnog ciklusa streama kako bismo razumjeli kako zaviriti () djela. Također smo vidjeli dva slučaja svakodnevne upotrebe prilikom korištenja zaviriti () je najjednostavnija opcija.

I kao i obično, primjeri su dostupni na GitHubu.


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