Java - Stream - Sammle alle N Elemente

7

Ich versuche Java - Stream zu lernen. Ich bin in der Lage, einfache Iteration / Filter / Map / Sammlung usw. zu machen.

Als ich irgendwie versuchte, alle drei Elemente zu sammeln und zu drucken, wie hier in diesem Beispiel gezeigt, [sammle alle drei Elemente und drucke und so weiter ...]

%Vor%

Ausgabe:

%Vor%

Ich habe keine Ahnung, wie man das mit Stream macht. Soll ich meinen eigenen Sammler dazu einsetzen?

    
KitKarson 27.03.2017, 22:45
quelle

5 Antworten

10

Sie können tatsächlich IntStream verwenden, um die Seitennummerierung Ihrer Liste zu simulieren.

%Vor%

welche Ausgaben:

%Vor%

Wenn Sie Strings generieren möchten, können Sie String.join verwenden, da Sie direkt mit einem List<String> arbeiten:

%Vor%     
Alexis C. 27.03.2017, 23:08
quelle
7

Sie können Ihre eigene Collector erstellen. Der einfachste Weg ist, Collector.of() .

Da Ihr Anwendungsfall erfordert, dass Werte in der richtigen Reihenfolge verarbeitet werden, ist hier eine Implementierung, die die parallele Verarbeitung einfach nicht unterstützt.

%Vor%

Testen

%Vor%

Ausgabe

%Vor%     
Andreas 27.03.2017 23:29
quelle
4

Wenn Sie Guava in Ihrem Projekt haben, können Sie Iterables.partition method:

verwenden %Vor%     
ZhekaKozlov 28.03.2017 01:35
quelle
1

Ich habe es so gelöst:

%Vor%

Es bereitet eine Karte vor, in der die Zeilennummer der Schlüssel ist und die Zeichenfolgen in der Zeile im Schlüssel sind.

    
BuckBazooka 04.11.2017 15:11
quelle
1

Ich denke, der Ansatz der Wetten basiert auf einer erstaunlichen Bibliothek StreamEx von Tagir Valeev . Die Lösung passt in eine Zeile))

%Vor%     
Cepr0 14.11.2017 21:40
quelle

Tags und Links