Antes de la funcion forEach, todos los iteradores en JAVA eran activos es decir, involucraban un ciclo for o un while que recorría la colección de datos hasta cumplir con cierta condición. Es decir que recorrer una colección se vería así; List<String> names = new LinkedList<String>(); for (String name : names) System.out.println(name); Con la introducción de forEach como una función en la interfaz Iterable, todas las clases que implementen iterable tiene añadida la función forEach y el siclo anterior se podría simplificar así: names.forEach(name -> System.out.println(name)); como puedes ver es una sola linea de código y lo mas inusual es este símbolo -> lo que nos indica estamos lidiando con una expresión Lambda, si no sabes nada de expresiones lambda ingresa a este link que tiene un tutorial a prueba de... digamos que for dummies ( https://programmingbabel.blogspot.com/2017/09/lambda-expressions-java.html ). La expresión lambda en ...
Blog dedicado a la programación en JAVA