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
Ú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.