Ablaufverfolgungsstreams

9

Ich arbeite mit Java 8-Streams und möchte eine Möglichkeit finden, sie zu debuggen. Also dachte ich, ich könnte einen Filter schreiben, der die Elemente in einer Phase des Streams ausdruckt, etwa so:

%Vor%

Schließen, aber das ist es nicht ganz, da es nicht die richtigen Begrenzer hat, um es lesbar zu machen:

%Vor%

Was ich will ist:

%Vor%

Gibt es einen Standard-Weg, dies zu tun? Beachten Sie, dass Peek, wie der verlinkte Artikel sagt, dies nicht tut, weil ich irgendwie alle Elemente des Streams in jeder Phase zusammen sammeln möchte.

    
pitosalas 09.04.2016, 20:53
quelle

2 Antworten

9

Sie müssten für jeden Prüfpunkt eine andere Liste verwenden.

Normalerweise würde ich die Verwendung von Stream-Operationen nicht empfehlen, um den Status auf diese Weise zu ändern, aber für Debugging-Zwecke denke ich, dass es in Ordnung ist. Wie @BrianGoetz weiter unten ausführt, war Debugging der Grund, warum peek hinzugefügt wurde.

%Vor%

Ausgabe:

%Vor%     
Paul Boddington 09.04.2016, 21:19
quelle
6

Wenn Sie Pauls Lösung sehr oft brauchen, könnte man eine statische Wrapper-Funktion schreiben, die indizierte Peek-Funktionen generiert:

%Vor%

Um diesen einen Schritt weiter zu automatisieren, könnte man sogar die gesamte (n) Stream-Schnittstelle (n) umschließen, so dass jede definierte Schnittstellenmethode eine umhüllte Implementierung zurückgibt, die automatisch nach jedem Schritt in der Pipeline sucht:

%Vor%

Da die Implementierung ziemlich mühsam und hoffentlich nicht notwendig wäre, bleibt die Implementierung dem Leser überlassen.

    
the8472 10.04.2016 13:23
quelle

Tags und Links