IntelliJ IDEA m'a recommandé de remplacer la boucle for-each suivante par un appel Java 8 "forEach":
for (Object o : objects) {
if (o instanceof SomeObject) {
doSomething();
}
}
L'appel recommandé aimerait ceci:
objects.stream().filter(o -> o instanceof SomeObject).forEach(o -> doSomething());
À moins que je ne comprenne mal comment fonctionne la fonctionnalité sous-jacente de Stream, il me semble que l'utilisation de stream est une opération O (2n) par opposition à une opération O (n) pour la boucle standard pour chaque boucle.
java
performance
java8
Mirrana
la source
la source
Réponses:
Les flux Java n'itèrent pas une fois dans votre collection pour chaque instruction, malgré ce que la syntaxe implique. Il applique la chaîne entière à chaque élément, un élément à la fois.
Dans votre cas, le flux fonctionnerait exactement comme la boucle. Prenez un élément, comparez-le à votre prédicat, puis appliquez votre opération, puis passez à l'élément suivant.
la source