Aproveite o mês das
carreiras na Alura

Até 44% OFF

Falta pouco!

00

DIAS

00

HORAS

00

MIN

00

SEG

ForEach Java: entenda sintaxe e objetivos completos

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 Imersão de IA da Alura com Google Gemini. Participe de aulas gratuitas online com certificado. Domine as inovações mais recentes da IA.

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.

Veja outros artigos sobre Programação