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

Desenvolvedor desde 2005, com especialização em aplicações Web, APIs Rest, arquitetura e segurança. Desde 2012 também atuo como instrutor, produzindo e ministrando cursos de desenvolvimento de software.No YouTube, mantenho o @canaldojavao, onde ensino programação com Java e outros assuntos relacionados com desenvolvimento de software.

Veja outros artigos sobre Programação