Je sens que je dois étendre un peu mon commentaire ...
À propos du paradigme \ style
C'est probablement l'aspect le plus notable. La FP est devenue populaire en raison de ce que vous pouvez éviter les effets secondaires. Je ne vais pas approfondir les avantages que vous pouvez en retirer, car cela n'est pas lié à la question.
Cependant, je dirai que l'itération utilisant Iterable.forEach est inspirée de FP et résulte plutôt d'apporter plus de FP à Java (ironiquement, je dirais qu'il n'y a pas beaucoup d'utilisation pour forEach en FP pur, car il ne fait rien d'autre que l'introduction Effets secondaires).
En fin de compte, je dirais que c'est plutôt une question de goût \ style \ paradigme que vous écrivez actuellement.
À propos du parallélisme.
Du point de vue des performances, il n'y a aucun avantage notable promis à utiliser Iterable.forEach over foreach (...).
Selon les documents officiels sur Iterable.forEach :
Exécute l'action donnée sur le contenu de l'itérable, dans l'ordre dans lequel les éléments se produisent lors de l'itération, jusqu'à ce que tous les éléments aient été traités ou que l'action lève une exception.
... c'est-à-dire que les documents indiquent clairement qu'il n'y aura pas de parallélisme implicite. L'ajout d'un serait une violation de LSP.
Maintenant, il y a des "collections parallèles" qui sont promises dans Java 8, mais pour travailler avec celles dont vous avez besoin, je dois être plus explicite et mettre un soin supplémentaire à les utiliser (voir la réponse de mschenk74 par exemple).
BTW: dans ce cas Stream.forEach sera utilisé, et cela ne garantit pas que le travail réel sera effectué en parallèle (dépend de la collection sous-jacente).
MISE À JOUR: ce n'est peut-être pas si évident et un peu étiré en un coup d'œil, mais il y a une autre facette du style et de la lisibilité.
Tout d'abord - les anciens forloops simples sont simples et anciens. Tout le monde les connaît déjà.
Deuxièmement, et plus important - vous voudrez probablement utiliser Iterable.forEach uniquement avec des lambdas à une ligne. Si le «corps» devient plus lourd - ils ont tendance à ne pas être si lisibles. Vous avez 2 options à partir d'ici - utilisez des classes internes (beurk) ou utilisez un ancien forloop ordinaire. Les gens sont souvent ennuyés quand ils voient les mêmes choses (itérations sur les collections) être effectuées dans différents styles / styles dans la même base de code, et cela semble être le cas.
Encore une fois, cela pourrait ou non être un problème. Dépend des personnes travaillant sur le code.