Wie können wir einen Stream von Grundelementen oder Objekten wie {0, 1, 2, 3, 4} mühelos umwandeln? aufeinanderfolgende Paare, wie unten dargestellt?
{new Pair(0, 1), new Pair(1, 2), new Pair(2, 3), new Pair(3, 4)}
Eintauchen in die Lösung
Während die Java 8-Streams-Bibliothek hervorragend darin ist, Streams für die parallele Verarbeitung in überschaubare Blöcke aufzuteilen, stellt sie die Stateful-Pipeline-Stufen vor Herausforderungen. Das Abrufen des Index des aktuellen Stream-Elements oder der Zugriff auf benachbarte Elemente stellen bemerkenswerte Einschränkungen dar.
Um diese Einschränkungen zu umgehen, verwenden wir häufig eine Technik, bei der Indizes zur Steuerung des Streams genutzt werden. Hier ist ein Einblick, wie wir mit diesem Ansatz Paare generieren können:
Code-Snippet:
IntStream.range(1, arrayList.size()) .mapToObj(i -> new Pair(arrayList.get(i-1), arrayList.get(i))) .forEach(System.out::println);
Erläuterung der Lösung:
In diesem Beispiel durchlaufen wir die ArrayList mit Indizes beginnend bei 1 und garantieren dies für jeden Index i können wir sowohl auf arrayList.get(i-1) als auch auf arrayList.get(i) zugreifen. Der Kern des Codes ist die Funktion „mapToObj“, die jeden Index in ein Paar umwandelt, das die angrenzenden Elemente enthält.
Einschränkungen und Erweiterungen:
Dieser Ansatz ist zwar effektiv für Bei endlichen Streams, die in einer Sammlung mit wahlfreiem Zugriff gespeichert sind, gilt dies nicht für unendliche Streams. Die Pipeline kann jedoch parallel ausgeführt werden, was Leistungsvorteile bietet.
Das obige ist der detaillierte Inhalt vonWie können wir aus einem Strom von Elementen effizient aufeinanderfolgende Paare erzeugen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!