Wydaje mi się, że muszę trochę rozszerzyć swój komentarz ...
O stylu paradygmatu
To chyba najważniejszy aspekt. FP stało się popularne ze względu na to, co można uzyskać, unikając skutków ubocznych. Nie będę zagłębiał się w to, jakie zalety i zalety możesz z tego uzyskać, ponieważ nie ma to związku z pytaniem.
Powiem jednak, że iteracja przy użyciu Iterable.forEach jest zainspirowana FP i raczej wynikiem wprowadzenia większej liczby FP do Javy (jak na ironię, powiedziałbym, że forEach w czystym FP nie ma większego zastosowania, ponieważ nie robi nic poza wprowadzeniem skutki uboczne).
Na koniec powiedziałbym, że jest to raczej kwestia gustu \ stylu \ paradygmatu, w którym obecnie piszesz.
O równoległości.
Z punktu widzenia wydajności nie ma obiecanych znaczących korzyści ze stosowania Iterable.forEach ponad foreach (...).
Według oficjalnych dokumentów na Iterable.forEach :
Wykonuje podaną akcję na zawartości Iterable, w kolejności , w której elementy występują podczas iteracji, aż wszystkie elementy zostaną przetworzone lub akcja wygeneruje wyjątek.
... tj. doktorzy całkiem jasno, że nie będzie żadnego ukrytego paralelizmu. Dodanie jednego byłoby naruszeniem LSP.
Teraz istnieją „równoległe kolekcje”, które są obiecane w Javie 8, ale aby pracować z tymi, musisz mi bardziej precyzyjnie i dołożyć starań, aby z nich korzystać (patrz na przykład odpowiedź mschenk74).
BTW: w tym przypadku zostanie użyty Stream.forEach i nie gwarantuje to, że faktyczna praca zostanie wykonana równolegle (zależy od podstawowej kolekcji).
AKTUALIZACJA: może nie jest to tak oczywiste i trochę rozciągnięte na pierwszy rzut oka, ale jest jeszcze jeden aspekt stylu i perspektywy czytelności.
Przede wszystkim - zwykłe stare forloopy są proste i stare. Wszyscy już je znają.
Po drugie, i ważniejsze - prawdopodobnie chcesz użyć Iterable. Dla każdego tylko z lambdami jednowarstwowymi. Jeśli „ciało” staje się cięższe - wydają się być nieczytelne. Masz dwie opcje stąd - użyj klas wewnętrznych (fuj) lub użyj zwykłego starego forloopa. Ludzie często denerwują się, gdy widzą, że te same czynności (iteratyny nad kolekcjami) są wykonywane w różnych stylach / stylach w tej samej bazie kodu, i wydaje się, że tak jest.
Ponownie może to stanowić problem. Zależy od ludzi pracujących nad kodem.