Il y avait un plug-in appelé Stream Debugger of IntelliJ IDEA qui visualise le flux de données de Stream API, j'ai donc essayé de l'utiliser.
environnement
référence
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
Définissez un point d'arrêt sur le flux que vous souhaitez déboguer et exécutez-le en mode débogage.
Cliquez sur l'icône "Trace Current Stream Chain" qui a été ajoutée au panneau Debug.
L'écran Stream Trace apparaît et vous pouvez vérifier le flux de données. (L'affichage peut prendre un certain temps en fonction de la quantité de données, etc.) Il existe deux modes d'affichage, "Flat Mode" et "Split Mode", qui peuvent être commutés avec le bouton en bas de l'écran. La figure ci-dessous est "Flat Mode".
Exemple de code
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);
Comme le montre cette figure, vous pouvez vérifier à l'écran comment les données sont traitées dans le traitement intermédiaire.
Ouvrez Plugins et cliquez sur le bouton [Parcourir les référentiels ...] en bas de l'écran.
Entrez "Stream Debugger" dans le champ de recherche pour affiner le plugin. Une fois que vous avez trouvé le débogueur de flux, cliquez sur le bouton Installer pour l'installer.
Après l'installation, redémarrez.
A Kotlin extension for Java Stream Debugger plugin.
Il existe également un plugin d'extension Kotlin pour Stream Debugger. L'utilisation est la même, définissez un point d'arrêt sur la séquence que vous souhaitez déboguer, exécutez-la en mode débogage et cliquez sur l'icône «Trace Current Stream Chain» dans le panneau Debug.
listOf(5, 5, 2, 1, 6, 4, 3, 2, 4, 3).asSequence()
.filter { it % 2 == 0 }
.distinct()
.sorted()
.forEach { println(it) }
Recommended Posts