Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Minha solução Questão 7

Minha solução do exercício 7, Filtrando produtos

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

        List<Produto> produtosFiltrados = produtos.stream()
                .filter(pdt -> pdt.getCategoria().equals("Eletrônicos") && pdt.getPreco() < 1000)
                .sorted((preco1, preco2) -> Double.compare(preco1.getPreco(), preco2.getPreco()))
                .collect(Collectors.toList());

        produtosFiltrados.forEach(System.out::println);

    }

Agradeceria sugestões para melhorar o código.

1 resposta
solução!

Oi, Gabriel! Tudo bem?

Excelente código, parabéns pelo projeto! Espero que esteja gostando do curso! Deixo apenas algumas sugestões que podem melhorar ainda mais o código:

  1. Uso de Comparators: em vez de usar uma expressão lambda para ordenar os produtos, você pode utilizar o método Comparator.comparing para tornar o código mais legível, como no exemplo:

    List<Produto> produtosFiltrados = produtos.stream()
            .filter(pdt -> pdt.getCategoria().equals("Eletrônicos") && pdt.getPreco() < 1000)
            .sorted(Comparator.comparing(Produto::getPreco))
            .collect(Collectors.toList());
    
  2. Limitar a quantidade de resultados: se você quiser mostrar apenas os três produtos mais baratos, pode usar o método limit:

    List<Produto> produtosFiltrados = produtos.stream()
            .filter(pdt -> pdt.getCategoria().equals("Eletrônicos") && pdt.getPreco() < 1000)
            .sorted(Comparator.comparing(Produto::getPreco))
            .limit(3)
            .collect(Collectors.toList());
    
  3. Impressão formatada: Para uma saída mais clara, você pode melhorar a forma como os produtos são impressos, por exemplo:

    produtosFiltrados.forEach(produto -> 
        System.out.println("Produto: " + produto.getNome() + ", Preço: " + produto.getPreco())
    );
    

Caso tenha ficado alguma dúvida em relação ao curso ou atividade, sinta-se à vontade em comunicar, estou à disposição e ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!