ForEach Java: o que é, quais são os objetivos e como é a sintaxe

ForEach Java: o que é, quais são os objetivos e como é a sintaxe
Akemi Alice, Rodrigo da Silva Ferreira Caneppele
Akemi Alice, Rodrigo da Silva Ferreira Caneppele

Compartilhe

O que é o Método forEach

O método forEach, introduzido nas APIs de Collections e Streams do Java 8, simplifica a interação sobre elementos de uma coleção, executando uma ação específica para cada elemento.

O nome "forEach" descreve precisamente sua funcionalidade: iterar sobre "cada" elemento da coleção. "for" remete às estruturas de controle de fluxo repetitivo, enquanto "each" enfatiza a iteração individual, tornando a nomenclatura intuitiva.

Banner da Escola de Programação: Matricula-se na escola de Programação. Junte-se a uma comunidade de mais de 500 mil estudantes. Na Alura você tem acesso a todos os cursos em uma única assinatura; tem novos lançamentos a cada semana; desafios práticos. Clique e saiba mais!

Quais são os objetivos do método forEach Java?

O forEach elimina a necessidade de loops explícitos como for ou while, tornando o código mais conciso e legível. Seus principais usos incluem:

  • Manipulação de Streams: Permite realizar operações em paralelo, aproveitando arquiteturas multi-core;
  • Manipulação de coleções: Simplifica a iteração e execução de operações em cada elemento;
  • Processamento de dados: Facilita a impressão, modificação, filtragem e outras operações em elementos de uma coleção;
  • Melhorar a legibilidade do código: Elimina a necessidade de loops tradicionais, tornando o código mais conciso e fácil de entender.

Como é a sintaxe do forEach?

Em relação ao forEach, temos a seguinte sintaxe:

arrayOuColecao.forEach(elemento -> {
  // Ação a ser executada para cada elemento
})

Em outras palavras, "para cada 'elemento' no 'arrayOuColecao', execute a 'ação' definida dentro das chaves".

Comparativamente, o tradicional loop for seria escrito da seguinte forma:

for (Tipo variavel : arrayOuColecao) {
  // Código a ser executado
}

Comparação com o loop for tradicional

Embora o forEach e o loop for-each (introduzido no Java 5) sejam usados para iNteração, o forEach do Java 8 oferece uma funcionalidade adicional.

Enquanto o loop for-each percorre os elementos de forma sequencial, o forEach se integra às APIs de Streams, permitindo a paralelização da iteração.

Além disso, o forEach aceita uma expressão lambda como argumento, definindo a ação a ser executada para cada elemento de forma concisa e expressiva.

Exemplos de uso do forEach

Aqui estão alguns exemplos de uso do forEach:

Iteração e impressão de elementos de uma lista

List<String> listaDaFeira = Arrays.asList("Abobrinha", "Berinjela", "Cenoura", "Ervilha");
listaDaFeira.forEach(legumes -> System.out.println(legumes));

Usando forEach com Map

Map<String, Integer> mapa = new HashMap<>();
mapa.put("Vítor", 1);
mapa.put("Rosana", 2);
mapa.put("Suellen", 3);
mapa.forEach((chave, valor) -> System.out.println(chave + " : " + valor));

Removendo elementos de uma lista

List<String> animaisVet = new ArrayList<>(Arrays.asList("gatinhos", "gato", "peixinhos", "peixe"));
animaisVet.removeIf(animal -> animal.length() > 6);
animaisVet.forEach(System.out::println);

Filtrando e imprimindo elementos de uma lista com base em uma condição

List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
numeros.stream()
       .filter(numero -> numero % 2 == 0) 
       .forEach(numero -> System.out.println(numero));

Conclusão

O método forEach do Java 8 oferece uma maneira concisa e eficiente de iterar sobre coleções e Streams, permitindo a execução de ações personalizadas para cada elemento.

Sua integração com as APIs de Streams abre portas para o processamento paralelo, enquanto sua sintaxe baseada em lambda promove a legibilidade e a expressividade do código.

Aprender a utilizar o forEach efetivamente capacita as pessoas desenvolvedoras a escreverem código Java mais moderno, eficiente e fácil de manter.

Akemi Alice
Akemi Alice

Akemi faz parte do Scuba Team na Escola de Programação & DevOps da Alura, com foco em Java, e é técnica em Informática pelo Instituto Federal de São Paulo (IFSP).

Rodrigo da Silva Ferreira Caneppele
Rodrigo da Silva Ferreira Caneppele

Bacharel em Sistemas de Informação pela Universidade Católica de Brasília e programador desde 2005, com especialização em aplicações Web, APIs Rest, arquitetura e cibersegurança. Desde 2012 também atua como instrutor, produzindo e ministrando cursos de desenvolvimento de software.No YouTube, mantém o @canaldojavao, cujo foco é ensinar programação com Java e também outros assuntos relacionados com desenvolvimento de software.

Veja outros artigos sobre Programação