Java 8 Streams peek () API

1. Introduktion

Java Stream API introducerer os til et effektivt alternativ til behandling af data.

I denne korte vejledning fokuserer vi på kigge (), en ofte misforstået metode.

2. Hurtigt eksempel

Lad os få vores hænder beskidte og prøve at bruge kigge (). Vi har en strøm af navne, og vi vil udskrive dem til konsollen.

Siden kigge () forventer en Forbruger som det eneste argument virker det som en god pasform, så lad os prøve:

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

Imidlertid producerer uddraget ovenfor ingen output. For at forstå hvorfor, lad os gøre en hurtig opdatering på aspekter af livets livscyklus.

3. Mellemliggende vs. terminaloperationer

Husk at streams har tre dele: en datakilde, nul eller flere mellemliggende operationer og nul eller en terminalhandling.

Kilden leverer elementerne til rørledningen.

Mellemliggende operationer får elementer en efter en og behandler dem. Alle mellemliggende operationer er dovne, og som følge heraf vil ingen operationer have nogen effekt, før rørledningen begynder at virke.

Terminaloperationer betyder afslutningen på strømens livscyklus. Vigtigst for vores scenario, de igangsætte arbejdet i rørledningen.

4. kigge () Anvendelse

Grunden kigge () fungerede ikke i vores første eksempel er det det er en mellemliggende operation, og vi anvendte ikke en terminal operation til rørledningen. Alternativt kunne vi have brugt for hver() med det samme argument for at få den ønskede adfærd:

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

kigge ()”Javadoc-siden siger:“Denne metode findes hovedsageligt til at understøtte fejlretning, hvor du vil se elementerne, når de flyder forbi et bestemt punkt i en rørledning“.

Lad os overveje dette uddrag fra den samme Javadoc-side:

Stream.of ("one", "two", "three", "four") .filter (e -> e.length ()> 3) .peek (e -> System.out.println ("Filtreret værdi: "+ e)) .map (String :: toUpperCase) .peek (e -> System.out.println (" Kortlagt værdi: "+ e)) .collect (Collectors.toList ());

Det viser, hvordan vi observerer de elementer, der passerede hver operation.

Oven i købet, kigge () kan være nyttigt i et andet scenario: hvornår vi ønsker at ændre elementets indre tilstand. Lad os for eksempel sige, at vi vil konvertere alle brugeres navn til små bogstaver, før vi udskriver dem:

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

Alternativt kunne vi have brugt kort(), men kigge () er mere praktisk, da vi ikke ønsker at udskifte elementet.

5. Konklusion

I denne korte vejledning så vi et resumé af livscyklussen for at forstå hvordan kigge () arbejder. Vi så også to hverdagsbrugssager, når vi brugte kigge () er den mest enkle mulighed.

Og som sædvanligt er eksemplerne tilgængelige på GitHub.


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