Intermediær Behandling med peek()-Metoden
Stryg for at vise menuen
Metoden peek() muliggør indsættelse af logning i behandlingsfasen uden at ændre datastreamen, hvorefter der kan fortsættes med operationer på elementer, der opfylder den nødvendige filtrering.
Stream<T> peek(Consumer<? super T> action);
Denne metode accepterer et objekt, der implementerer Consumer-interfacet, som udfører en operation på hvert streamelement.
Praktisk eksempel
En fabrik skal inspicere produkter for at sikre, at deres navne starter med "product-" og matcher et specifikt mønster. Samtidig ønskes det at logge alle produkter i listen. Gyldige produkter skal samles i en liste og udskrives til konsollen.
Main.java
123456789101112131415161718192021package com.example; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<String> items = Arrays.asList("product-H31KD", "product-A12ZX", "item-X99KD", "product-B67QF", "product-12345", "invalidData"); // Example of using peek for logging and collecting filtered elements into a new list List<String> validProducts = items.stream() .peek(item -> System.out.println("Checking item: " + item)) .filter(item -> item.startsWith("product-")) .toList(); // Collecting filtered elements into a list // Printing the list of validated products System.out.println("List of validated products: " + validProducts); } }
Koden filtrerer elementer fra items-listen, så kun dem, der starter med "product-", bevares. peek()-metoden logger hvert kontrolleret element, og de gyldige produkter samles i en liste og udskrives til konsollen.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat