Obydwie metody zrobią dla nas to samo. Z tym, że wersja Collections.forEach skorzysta z iteratora kolekcji (jeśli takowy jest) a wersja Stream.forEach już nie. Co to zmienia? To, że używając Collections.forEach załóżmy na liście będziemy mieli gwarancję kolejności wykonania, niestety używając Stream.forEach już takiej nie mamy.
Warto zajrzeć
- Szerzej opisany temat jest tutaj https://www.baeldung.com/java-collection-stream-foreach