Sento che devo estendere un po 'il mio commento ...
A proposito di paradigma \ stile
Questo è probabilmente l'aspetto più notevole. FP è diventato popolare grazie a ciò che puoi ottenere evitando gli effetti collaterali. Non approfondirò quali vantaggi puoi trarre da questo, dal momento che questo non è correlato alla domanda.
Tuttavia, dirò che l'iterazione che utilizza Iterable.forEach è ispirata a FP e piuttosto il risultato del portare più FP a Java (ironicamente, direi che non c'è molto uso per ogni in FP puro, poiché non fa altro che introdurre effetti collaterali).
Alla fine direi che è piuttosto una questione di gusti \ stile \ paradigma in cui stai scrivendo.
Sul parallelismo.
Dal punto di vista delle prestazioni non ci sono notevoli vantaggi promessi dall'uso di Iterable.forOach over foreach (...).
Secondo i documenti ufficiali su Iterable.forEach :
Esegue l'azione data sul contenuto di Iterable, nell'ordine in cui gli elementi si verificano durante l'iterazione, fino a quando tutti gli elementi non sono stati elaborati o l'azione genera un'eccezione.
... vale a dire documenti abbastanza chiari che non ci sarà parallelismo implicito. Aggiungerne uno sarebbe una violazione di LSP.
Ora, ci sono "raccolte parallele" che sono promesse in Java 8, ma per lavorare con quelle che hai bisogno di me sono più esplicite e metti qualche cura in più per usarle (vedi la risposta di mschenk74 per esempio).
A proposito: in questo caso verrà utilizzato Stream.forEach e non garantisce che il lavoro effettivo verrà eseguito in parallelo (dipende dalla raccolta sottostante).
AGGIORNAMENTO: potrebbe non essere così ovvio e un po 'allungato a colpo d'occhio ma c'è un'altra sfaccettatura di stile e prospettiva di leggibilità.
Prima di tutto - i vecchi vecchi pianura sono semplici e vecchi. Tutti li conoscono già.
In secondo luogo, e più importante, probabilmente vorrai usare Iterable.forOach solo con lambda da una fodera. Se il "corpo" diventa più pesante, tendono a non essere così leggibili. Hai 2 opzioni da qui: usa le classi interne (schifo) o usa semplicemente il vecchio forloop. Le persone spesso si arrabbiano quando vedono che le stesse cose (iteratine sulle raccolte) vengono eseguite su vari vays / stili nella stessa base di codice, e questo sembra essere il caso.
Ancora una volta, questo potrebbe o non potrebbe essere un problema. Dipende dalle persone che lavorano al codice.