IntelliJ IDEA m'a recommandé tout à l'heure 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 O(n) opération pour la boucle standard pour chaque boucle.
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.