1
resposta

DESAFIO

1

public class Main {
    public static void main(String[ ] args) {
        List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6);
        
        numeros.stream()
               .filter(n -> n % 2 == 0) 
               .forEach(System.out::println); 
    }
}

2 - Dada a lista de strings abaixo, converta todas para letras maiúsculas e imprima-as.

public class Main {
    public static void main(String[] args) {
        List<String> palavras = Arrays.asList("java", "stream", "lambda");

        palavras.stream()
                .map(String::toUpperCase)
                .forEach(System.out::println);
    }
}

3 - Dada a lista de números inteiros abaixo, filtre os números ímpares, multiplique cada um por 2 e colete os resultados em uma nova lista.

public class Main {
    public static void main(String[] args) {
        List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6);

        List<Integer> resultado = numeros.stream()
                .filter(n -> n % 2 != 0)
                .map(n -> n * 2) 
                .collect(Collectors.toList());

        System.out.println(resultado);
    }
}

4 - Dada a lista de strings abaixo, remova as duplicatas (palavras que aparecem mais de uma vez) e imprima o resultado.

public class Main {
    public static void main(String[] args) {
        List<String> palavras = Arrays.asList("apple", "banana", "apple", "orange", "banana");

        List<String> unicas = palavras.stream()
                                      .distinct()
                                      .collect(Collectors.toList());

        System.out.println(unicas);
    }
}
1 resposta

Oi, Benjamin! Como vai?

Você aplicou muito bem o uso das streams para manipular coleções de dados em Java, usando filtros, mapeamentos, coleta e remoção de duplicatas. Esses exemplos mostram bastante domínio dos conceitos que envolvem lambdas e fluxo de dados.

Uma dica interessante para o futuro é usar o método peek(), que permite inspecionar os elementos da stream durante o processamento, sem interrompê-la. Veja este exemplo simples:


List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> resultado = numeros.stream()
    .filter(n -> n % 2 != 0)
    .peek(n -> System.out.println("Impar encontrado: " + n))
    .map(n -> n * 10)
    .collect(Collectors.toList());
System.out.println(resultado);

Esse código filtra os números ímpares, imprime cada um deles enquanto passa pelo filtro e multiplica por 10 antes de coletar em uma lista.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!