Хоча forEach
коротший і виглядає симпатичнішим, я пропоную використовувати forEachOrdered
в будь-якому місці, де має значення порядок, щоб чітко це вказати. Для послідовних потоків, forEach
здається, поважає порядок і навіть використовує внутрішній код API потоку forEach
(для потоку, який, як відомо, є послідовним), де це семантично необхідно використовувати forEachOrdered
! Проте пізніше ви можете вирішити змінити свій потік на паралельний, і ваш код буде зламаний. Також коли ви використовуєтеforEachOrdered
зчитувач вашого коду, бачить повідомлення: "порядок тут важливий". Таким чином, він краще документує ваш код.
Зауважте також, що для паралельних потоків forEach
не тільки виконується в недетермінованому порядку, але ви також можете одночасно виконувати його в різних потоках для різних елементів (що неможливо з forEachOrdered
).
Нарешті, обидва forEach
/ forEachOrdered
рідко бувають корисними. У більшості випадків вам насправді потрібно отримати якийсь результат, а не лише побічний ефект, отже операції, подібні reduce
або collect
повинні бути більш придатними. Вираження скорочувальної природи за допомогою forEach
звичайно вважається поганим стилем.