Java 8 Streams peek () API

1. Introduksjon

Java Stream API introduserer oss for et kraftig alternativ for behandling av data.

I denne korte opplæringen vil vi fokusere på kikke (), en ofte misforstått metode.

2. Rask eksempel

La oss skitne hendene og prøve å bruke kikke (). Vi har en strøm med navn, og vi vil skrive dem ut til konsollen.

Siden kikke () forventer a Forbruker som det eneste argumentet, virker det som en god passform, så la oss prøve:

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

Utdraget ovenfor gir imidlertid ingen utdata. For å forstå hvorfor, la oss gjøre en rask oppdatering på aspekter av livets livssyklus.

3. Mellomliggende kontra terminaloperasjoner

Husk at strømmer har tre deler: en datakilde, null eller flere mellomoperasjoner og null eller en terminaloperasjon.

Kilden gir elementene til rørledningen.

Mellomliggende operasjoner får elementer en etter en og behandler dem. Alle mellomliggende operasjoner er lat, og som et resultat vil ingen operasjoner ha noen effekt før rørledningen begynner å virke.

Terminaloperasjoner betyr slutten på livssyklusen. Viktigst for vårt scenario, de sette i gang arbeidet i rørledningen.

4. kikke () Bruk

Grunnen kikke () fungerte ikke i vårt første eksempel er det Det er en mellomliggende operasjon og vi brukte ikke en terminal operasjon til rørledningen. Alternativt kunne vi ha brukt for hver() med samme argument for å få ønsket oppførsel:

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

kikke ()På Javadoc-siden står: “Denne metoden eksisterer hovedsakelig for å støtte feilsøking, hvor du vil se elementene når de flyter forbi et bestemt punkt i en rørledning“.

La oss vurdere dette utdraget fra samme Javadoc-side:

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

Det demonstrerer hvordan vi observerer elementene som passerte hver operasjon.

På toppen av det, kikke () kan være nyttig i et annet scenario: når vi ønsker å endre den indre tilstanden til et element. La oss for eksempel si at vi vil konvertere alle brukerens navn til små bokstaver før vi skriver dem ut:

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

Alternativt kunne vi ha brukt kart(), men kikke () er mer praktisk siden vi ikke vil erstatte elementet.

5. Konklusjon

I denne korte veiledningen så vi et sammendrag av livssyklusen for å forstå hvordan kikke () virker. Vi så også to hverdagsbrukstilfeller når vi brukte kikke () er det mest enkle alternativet.

Og som vanlig er eksemplene tilgjengelige på GitHub.


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