Um effektiv über einen Stream zu iterieren und auf Indizes zuzugreifen, stehen mehrere Ansätze zur Verfügung.
Die sauberste Lösung besteht darin, einen Stream von Indizes zu erstellen und ihn basierend zu filtern auf den Elementen des Streams:
String[] names = {"Sam", "Pamela", "Dave", "Pascal", "Erik"}; IntStream.range(0, names.length) .filter(i -> names[i].length() <= i) .mapToObj(i -> names[i]) .collect(Collectors.toList());
Dieser Ansatz stellt sicher, dass die resultierende Liste nur Elemente enthält, die das indexbasierte Kriterium erfüllen.
Eine weitere Alternative besteht darin, einen veränderlichen Zähler innerhalb des Streams zu verwalten:
String[] names = {"Sam", "Pamela", "Dave", "Pascal", "Erik"}; AtomicInteger index = new AtomicInteger(); List<String> list = Arrays.stream(names) .filter(n -> n.length() <= index.incrementAndGet()) .collect(Collectors.toList());
Diese Methode bietet eine vertraute Syntax ähnlich for-Schleifen. Es ist jedoch wichtig zu beachten, dass dieser Ansatz möglicherweise scheitern kann, wenn er in einem parallelen Stream verwendet wird, da Elemente möglicherweise nicht in der richtigen Reihenfolge verarbeitet werden.
Letztendlich hängt die Wahl des Ansatzes von den spezifischen Anforderungen ab und Leistungsaspekte der Anwendung.
Das obige ist der detaillierte Inhalt vonWie kann ich beim Zugriff auf Elementindizes einen Java 8-Stream durchlaufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!