1
resposta

[Sugestão] Desafio 01 ao 06

package br.com.mlucas.atividades1;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {

        // exibir apenas os números pares da lista
        List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6);
        List<Integer> numerosPares = numeros.stream()
                .filter(n -> n % 2 == 0).collect(Collectors.toList());
        System.out.println("Lista completa: " + numeros);
        System.out.println("Números Pares: " + numerosPares);

        // converter todas as palavras para maiúsculas
        List<String> palavras = Arrays.asList("java", "stream", "lambda");
        palavras.stream().map(String::toUpperCase).forEach(System.out::println);

        // remover as duplicatas da lista.
        List<String> palavras2 = Arrays.asList("apple", "banana", "apple", "orange", "banana");
        List<String> semDuplicatas = palavras2.stream().distinct().collect(Collectors.toList());
        System.out.println("Lista sem duplicatas: " + semDuplicatas);

        // extrair numeros primos e ordena-los em ordem crescente
        List<List<Integer>> listaDeNumeros = Arrays.asList(
                Arrays.asList(1, 2, 3, 4),
                Arrays.asList(5, 6, 7, 8),
                Arrays.asList(9, 10, 11, 12)
        );
        List<Integer> primos = listaDeNumeros.stream()
                .flatMap(List::stream) 
                .filter(n -> n > 1 && IntStream.rangeClosed(2, (int) Math.sqrt(n))
                        .noneMatch(i -> n % i == 0)) // Filtra primos
                .collect(Collectors.toList());

        System.out.println("Números primos: " + primos);
        }
    }
package br.com.mlucas.atividades1;

public class Pessoa {
    String nome;
    int idade;

    Pessoa(String nome, int idade) {
        this.nome = nome;
        this.idade = idade;
    }

    public String getNome() {
        return nome;
    }

    public int getIdade() {
        return idade;
    }

    @Override
    public String toString() {
        return "nome='" + nome + '\'' +
                ", idade=" + idade ;
    }
}
package br.com.mlucas.atividades1;

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
        public static void main(String[] args) {
            List<Pessoa> pessoas = Arrays.asList(
                    new Pessoa("Alice", 22),
                    new Pessoa("Bob", 17),
                    new Pessoa("Charlie", 19)
            );
            // código para filtrar pessoas
            List<Pessoa> pessoasAdulta = pessoas.stream().filter(p -> p.idade > 18)
                    .sorted(Comparator.comparing(p -> p.nome))
                    .collect(Collectors.toList());
            System.out.println("Adultos ordenados: " + pessoasAdulta);
        }
}
1 resposta

Oi, Márcio! Como vai?

Gostei bastante da sua aplicação das streams para manipular coleções, principalmente o uso de flatMap para extrair e filtrar números primos. Sua solução ficou bem estruturada e objetiva.

Uma dica interessante para o futuro é explorar o método peek() para realizar depuração no meio do fluxo, sem interromper o stream. Veja este exemplo:


List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5);
numeros.stream()
    .peek(n -> System.out.println("Processando: " + n))
    .map(n -> n * 2)
    .forEach(System.out::println);

Esse código imprime cada número antes de dobrá-lo, ajudando na visualização do processamento.

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