Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Diferença entre filter e map

Eu fiquei com dúvida quanto ao funcionamento do filter e do map, pois para mim parecem muito próximos. Por vezes usando-se o filter ou o map pode-se ter o mesmo resultado. Seria possível dar exemplos de quando usar map ao invés de filter e vice-versa?

4 respostas
solução!

O .map apenas transforma o objeto, já o método filter() verifica uma condição e passa o objeto ou valor para a próxima etapa se a condição for true.

No exemplo abaixo, dado uma lista de números em formato String vou utilizar o .map para converter cada um dos elementos da lista em Integer e depois utilizar o .filter para retornar em um List<Integer> apenas os números pares.

 public static void main(String[] args) {
    List<String> numbers = Arrays.asList("1", "2", "3", "4", "5", "6");
    System.out.println("original list: " + numbers);
    List<Integer> even = numbers.stream()
                                .map(s -> Integer.valueOf(s))
                                .filter(number -> number % 2 == 0)
                                .collect(Collectors.toList());

    System.out.println("processed list, only even numbers: " + even);
   }

Valeu, Otávio! Agora entendi. O método collect que implementa uma Collectors é que receberá os dados transformados, certo?

Exato ROZENILDO, isso mesmo :)

Valeu, Otávio!