Exemplo de forEach do Java 8

Postado em por Wolmir Cezer Garbin em Java | 257 Visualizações
Última atualização em:

Este post tem como objetivo demostrar como você pode utilizar o forEach do java 8 e como era antes do Java 8

Antes do Java 8 um cenário normalmente encontrado, era ter uma lista populada e percorrer usando um looping com um for.

Veja o exemplo:

import java.util.Arrays;
import java.util.List;

public class Sample {

    public static void main(String[] args) {

        List<Integer> itens = Arrays.asList( 11, 10, 16, 5, 85 );

        for(Integer item : itens){
            System.out.print(item);
        }
    }
}

O resultado será:

11
10
16
5
85

Este exemplo apenas imprime todos os elementos da lista de itens.

Seguindo nesta ideia, após o Java 8, podemos escrever este mesmo exemplo da seguinte forma:

import java.util.Arrays;
import java.util.List;

public class Sample {

    public static void main(String[] args) {

        List<Integer> itens = Arrays.asList( 11, 10, 16, 5, 85 );

        itens.forEach(item->System.out.println(item));
    }
}

O resultado será:

11
10
16
5
85

Dessa maneira já podemos ver que esta bem mais fácil, mas ainda podemos melhorar este código usando o recurso também adicionado ao Java 8, method reference:

Veja:

import java.util.Arrays;
import java.util.List;

public class Sample {

    public static void main(String[] args) {

        List<Integer> itens = Arrays.asList( 11, 10, 16, 5, 85 );

	itens.forEach(System.out::println);
    }
}

O resultado será:

11
10
16
5
85

Apesar de ser mais simples ainda não entendemos seu principal objetivo, é o que vamos entender agora.

Filtar itens de List usando Java 8 e lambda

Um dos objetivos é permitir filtrar itens de uma maneira mais fácil de ler e entender, veja:

List<Integer> itens = Arrays.asList( 11, 10, 16, 5, 85 );

for(Integer item : itens){
    if ( item == 16 )
        System.out.println(item);
}

O resultado será:

16

Fazendo isso usando java 8, lambda e stream, podemos escrever assim:

List<Integer> itens = Arrays.asList( 11, 10, 16, 5, 85 );

itens.stream().filter(i -> i == 16).forEach(System.out::println);

O resultado será:

16

Filtrando os itens maiores que 20

Você poderia escrever tranquilamente assim:

List<Integer> itens = Arrays.asList( 11, 10, 16, 5, 85 );

for(Integer item : itens){
    if ( item > 16 )
        System.out.println(item);
}

O resultado será:

85

Mas usando java 8, lambda e stream, podemos escrever assim:

List<Integer> itens = Arrays.asList( 11, 10, 16, 5, 85 );

itens.stream().filter(i -> i > 16).forEach(System.out::println);

O resultado será:

85

Estes são apenas alguns exemplos, mas ainda é possível fazer muito mais.

Qualquer dúvida deixe nos comentários


Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.


Wolmir Cezer Garbin

Wolmir Cezer Garbin


Sou formado em Desenvolvimento de Sistemas para Internet pela faculdade Mater Dei e Pós graduado em Desenvolvimento de sistemas em Java pela UTFPR. Trabalho a mais de 9 anos com desenvolvimento em Java, Android e Web utilizando as principais tecnologias do mercado. Atuo como professor na faculdade Mater Dei, programador na Garbo Software e criador do Receitas de Código.

Ver mais

FIQUE POR DENTRO

Receba as novidades todo mês em seu e-mail!

Apoiadores

Code Conference

Esta é uma conferência de código realizada na cidade de Pato Branco para dissiminar tendências e informações sobre programação e novas tecnológias

Veja mais sobre o Code Conference

Publique seu post no Receitas de Código

Agora você pode publicar seu post no Receitas de Código e compartilhar seu conhecimento com muitas pessoas!

Quero publicar