Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Resolução do problema

import java.util.Arrays;
import java.util.List;

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

public class Maiusculas {
    public static void main(String[] args) {
        List<String> palavras = Arrays.asList("java", "go", "c#", "c++", "python", "php");
        palavras.stream()
                .map(p -> p.toUpperCase())
                .forEach(System.out::println);
    }
}
import java.util.Arrays;
import java.util.List;

public class MultiplicarImpares {
    public static void main(String[] args) {
        List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
        numeros.stream()
                .filter(n -> n % 2 !=0)
                .map(n -> n * 2)
                .forEach(System.out::println);
    }
}
import java.util.Arrays;
import java.util.List;

public class Duplicatas {
    public static void main(String[] args) {
        List<String> palavras = Arrays.asList("Java", "Python", "Java", "C++", "Ruby", "C#");
        palavras.stream()
                .distinct()
                .forEach(System.out::println);
    }
}
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;

public class FiltrarPrimos {
    public static void main(String[] args) {
        List<List<Integer>> listaNumeros = Arrays.asList(
                Arrays.asList(1, 2, 3, 4),
                Arrays.asList(5, 6, 7, 8),
                Arrays.asList(9, 10, 11, 12)
        );
        Predicate<Integer> isPrimo = (num) -> {
            if (num <= 1) {
                return false;
            }
            if (num == 2) {
                return true;
            }
            if (num % 2 == 0) {
                return false;
            }
            for (int i = 3; i <= Math.sqrt(num); i += 2) {
                if (num % i == 0) {
                    return false;
                }
            }
            return true;
        };

        listaNumeros.stream()
                .flatMap(List::stream)
                .filter(isPrimo)
                .forEach(System.out::println);

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

}
import java.util.Arrays;
import java.util.List;

public class MainPessoa {
    public static void main(String[] args) {
        List<Pessoa> pessoas = Arrays.asList(
                new Pessoa("Alice", 22),
                new Pessoa("Bob", 17),
                new Pessoa("Charlie", 19)
        );

        pessoas.stream()
                .filter(pessoa -> pessoa.getIdade() >= 18)
                .map(Pessoa::getNome)
                .forEach(System.out::println);
    }
}
public class Produto {
    private String nome;
    private double preco;
    private String categoria;

    public Produto(String nome, double preco, String categoria) {
        this.nome = nome;
        this.preco = preco;
        this.categoria = categoria;
    }

    public String getNome() {
        return nome;
    }

    public double getPreco() {
        return preco;
    }

    public String getCategoria() {
        return categoria;
    }

    @Override
    public String toString() {
        return "Produto{" +
                "nome='" + nome + '\'' +
                ", preco=" + preco +
                ", categoria='" + categoria + '\'' +
                '}';
    }

}
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

public class MainProdutos {
    public static void main(String[] args) {
        List<Produto> produtos = Arrays.asList(
                new Produto("Smartphone", 800.0, "Eletrônicos"),
                new Produto("Notebook", 1500.0, "Eletrônicos"),
                new Produto("Teclado", 200.0, "Eletrônicos"),
                new Produto("Cadeira", 300.0, "Móveis"),
                new Produto("Monitor", 900.0, "Eletrônicos"),
                new Produto("Mesa", 700.0, "Móveis")
        );

        produtos.stream()
                .filter(p -> p.getCategoria().equals("Eletrônicos") && p.getPreco() < 1000)
                .sorted(Comparator.comparingDouble(Produto::getPreco))
                .forEach(System.out::println);
    }
}
1 resposta

Oi, Bruno. Tudo bem com você?

Que legal que você resolveu todos os desafios sobre manipulação de streams e lambdas em Java. Você trouxe soluções completas que cobrem uma variedade de operações com coleções, desde as mais simples como filtrar números pares até as mais complexas como trabalhar com streams aninhados e predicados customizados. O seu código demonstra familiaridade com os principais métodos disponíveis na API de streams, e você aplicou as expressões lambda de forma natural e funcional.

Analisando suas soluções, todas estão funcionando corretamente e seguem bem as boas práticas de programação funcional em Java. Seus usos de filter, map, sorted, distinct e flatMap estão apropriados para cada contexto, e você conseguiu encadear essas operações de forma legível. Uma coisa que vale destacar é como você estruturou o predicado isPrimo no exercício de números primos. Em vez de escrever a lógica diretamente no filter, você extraiu em uma variável Predicate, o que torna o código mais reutilizável e facilita a leitura. Isso é pensamento programático de verdade.

Obrigado por compartilhar suas soluções conosco, Bruno. Você está indo muito bem com streams e lambdas. Continue compartilhando seus desafios resolvidos no fórum, pois suas implementações ajudam toda a comunidade.

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