Präzise Stream-Iteration mit Indizes in Java 8
Das Iterieren über einen Stream in Java 8 bei gleichzeitigem Zugriff auf seine Indizes kann mit erreicht werden Es gibt verschiedene Methoden, wobei die einfachste darin besteht, mit einem Strom von Indizes zu beginnen.
Zum Beispiel der folgende Code generiert einen Strom von Ganzzahlen von 0 bis zur Länge des Arrays „names“, filtert Indizes heraus, bei denen die entsprechende Zeichenfolgenlänge größer als der Index ist, und sammelt die resultierenden Zeichenfolgen in einer Liste:
String[] names = {"Sam", "Pamela", "Dave", "Pascal", "Erik"}; List<String> nameList = IntStream.range(0, names.length) .filter(i -> names[i].length() <= i) .mapToObj(i -> names[i]) .collect(Collectors.toList());
Dies führt zu einer Liste, die nur „Erik“ enthält, da ihre Länge (4) kleiner oder gleich ihrem Index (4) ist.
Ein alternativer, wenn auch weniger prägnanter Ansatz besteht darin, eine Anzeige zu pflegen Hoc-Zähler innerhalb der Filtermethode. Allerdings Es ist wichtig zu beachten, dass die Verwendung dieser Methode in einem parallelen Stream dazu führen kann, dass die Elemente nicht in der richtigen Reihenfolge verarbeitet werden.
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());
Das obige ist der detaillierte Inhalt vonWie kann ich einen Java 8-Stream mit Zugriff auf Indizes effizient durchlaufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!