Pesquisar este blog

terça-feira, 14 de outubro de 2014

Usando o método filter para extrair dados de uma collection no Java8

Este post vai descrever o método funcional filter, que foi adicionado no java 8 e ajuda trabalhar com as collections do java.
Para todos os exemplos, podemos considerar as classes deste repositorio

Filter

O método filter é um método funcional bem interessante, com pode-se filtrar os elementos de uma lista. Imagine que voce possui uma lista de usuários, e nesta objeto usuario existe um atributo chamado idade.
Para selecionar todos elementos daquela lista que sejam maiores de 18 anos, você pode usar o método filter, como mostrado abaixo:
List<Usuario> lista = new ArrayList<Usuario>();             lista.add(new Usuario(1,"Menor de idade",17));                  lista.add(new Usuario(2,"Maior de idade", 19));                  lista.add(new Usuario(3,"Idoso",70));                          Stream<Usuario> maioresDeIdade = lista.stream()                      .filter(f -> f.getIdade()>=18);
Da lista obtivemos uma Stream de usuários, que só contem os objetos de usuários onde o atributo idade for maior ou igual a 18. O filter retorna uma nova instância de stream contendo somente os elementos que obedecem a checagem lambida, que neste caso é se a idade é maior ou igual a 18.
Pode-se realizar múltiplas checagens dentro de um filter, como mostrado abaixo:
Stream<Usuario> maioresDeIdade = lista.stream()                      .filter(f -> f.getIdade()>=18 && nome.startsWith("D"));
Checagens com and e or podem ser realizadas da mesma maneira que são feitas nos ifs.
 

Nenhum comentário:

Postar um comentário