Я відчуваю, що мені потрібно трохи розширити свій коментар ...
Про парадигму \ стиль
Це, мабуть, найпомітніший аспект. ПП стала популярною завдяки тому, що ви можете уникати побічних ефектів. Я не буду заглиблюватися в глиб того, які плюси та мінуси ви можете отримати від цього, оскільки це не пов'язане з питанням.
Однак я скажу, що ітерація за допомогою Iterable.forEach натхненна FP, а скоріше результатом приведення більшої кількості FP на Java (за іронією долі, я б сказав, що ForEach багато не використовує в чистому FP, оскільки це не робить нічого, крім введення побічні ефекти).
Наприкінці я б сказав, що це скоріше питання смаку \ стилю \ парадигми, про який ви зараз пишете.
Про паралелізм.
З точки зору продуктивності, немає обіцяних помітних переваг від використання Iterable.forEach над foreach (...).
Згідно з офіційними документами на Iterable.forEach :
Виконує задану дію над вмістом Iterable, в порядку порядку виникають під час ітерації, поки всі елементи не будуть оброблені або дія не кине виняток.
... тобто в Документах ясна річ, що не буде явного паралелізму. Додавання цього було б порушенням LSP.
Тепер є "колекції паралельних", які обіцяні в Java 8, але для роботи з тими, хто вам потрібен, явніше і вкладіть додатковий догляд, щоб їх використовувати (див. Відповідь mschenk74, наприклад).
BTW: у цьому випадку буде використовуватися Stream.forEach , і це не гарантує, що фактична робота буде виконуватися паралельно (залежить від базової колекції).
ОНОВЛЕННЯ: може бути не настільки очевидним і трохи розтягнутим на перший погляд, але є ще одна грань стилю та перспективності читання.
Перш за все - звичайні старі форліпи - це звичайні та старі. Усі вже їх знають.
По-друге, і що важливіше - ви, мабуть, хочете використовувати Iterable.forБудьте лише з однолінійними лямбдами. Якщо "тіло" стає важчим - вони, як правило, не такі, що читаються. Тут у вас є два варіанти - використовувати внутрішні класи (yuck) або використовувати звичайний старий forloop. Люди часто дратуються, коли вони бачать одні і ті ж речі (ітеративи над колекціями), які робляться різними ваями / стилями в одній і тій же кодовій базі, і це, мабуть, так.
Знову ж таки, це може бути або не бути проблемою. Залежить від людей, які працюють над кодом.