Es gab ein Plug-In namens Stream Debugger von IntelliJ IDEA, das den Datenfluss der Stream API visualisiert, also habe ich versucht, es zu verwenden.
Umgebung
Referenz
Java Stream Debugger
Want an easy way to debug chains of Java 8’ Stream API calls? Try IntelliJ IDEA with http://ow.ly/jT9w30bEY9i
— IntelliJ IDEA @intellijidea 12. Mai 2017
Legen Sie einen Haltepunkt für den Stream fest, den Sie debuggen möchten, und führen Sie ihn im Debug-Modus aus.
Klicken Sie auf das Symbol "Aktuelle Stream-Kette verfolgen", das dem Debug-Bedienfeld hinzugefügt wurde.
Der Bildschirm Stream Trace wird angezeigt und Sie können den Datenfluss überprüfen. (Die Anzeige kann je nach Datenmenge usw. einige Zeit dauern.) Es gibt zwei Anzeigemodi, "Flat Mode" und "Split Mode", die mit der Taste am unteren Bildschirmrand umgeschaltet werden können. Die folgende Abbildung zeigt "Flat Mode".
Beispielcode
List<String> colors = Arrays.asList(
"pink", "red", "orange", "brown", "yellow", "green", "blue", "gray", "white", "black", "purple",
"red", "white", "brown", "pink", "white", "orange", "yellow", "blue", "gray"
);
colors.stream()
.peek(System.out::println)
.distinct()
.sorted(Comparator.comparing(String::length))
.map(String::toUpperCase)
.forEach(System.out::println);
Wie in dieser Abbildung gezeigt, können Sie auf dem Bildschirm überprüfen, wie die Daten in der Zwischenverarbeitung behandelt werden.
Öffnen Sie Plugins und klicken Sie unten auf dem Bildschirm auf die Schaltfläche [Repositorys durchsuchen ...].
Geben Sie "Stream Debugger" in das Suchfeld ein, um das Plugin einzugrenzen. Wenn Sie den Stream-Debugger gefunden haben, klicken Sie auf die Schaltfläche Installieren, um ihn zu installieren.
Starten Sie nach der Installation neu.
A Kotlin extension for Java Stream Debugger plugin.
Es gibt auch ein Kotlin-Erweiterungs-Plugin für Stream Debugger. Die Verwendung ist dieselbe. Legen Sie einen Haltepunkt für die Sequenz fest, die Sie debuggen möchten, führen Sie sie im Debug-Modus aus und klicken Sie im Debug-Bereich auf das Symbol "Aktuelle Stream-Kette verfolgen".
listOf(5, 5, 2, 1, 6, 4, 3, 2, 4, 3).asSequence()
.filter { it % 2 == 0 }
.distinct()
.sorted()
.forEach { println(it) }
Recommended Posts