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);
}