Exemplo de forEach do Java 8

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

Wolmir Cezer Garbin por Wolmir Cezer Garbin - - Java - TUTORIAL

Última atualização em: | 141828 Visualizações

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.

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


Apoiadores

Publique seu post no Receitas de Código

Aguarde, estamos trabalhando para que você possa publicar sua postagem no Receitas de Código!