Heim > Java > javaLernprogramm > Wie kann ich einen Java 8-Stream mit Zugriff auf Indizes effizient durchlaufen?

Wie kann ich einen Java 8-Stream mit Zugriff auf Indizes effizient durchlaufen?

DDD
Freigeben: 2024-12-28 19:27:14
Original
742 Leute haben es durchsucht

How Can I Efficiently Iterate Through a Java 8 Stream with Access to Indices?

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());
Nach dem Login kopieren

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());
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage