2
respostas

Exercício Java: trabalhando com lambdas, streams e Spring Framework

Boa tarde, tudo bem? Não consegui fazer o exercício 7, 8 e 9 vocês podem me ajudar por favor?

7 - Dada a lista de produtos acima, conte quantos produtos há em cada categoria e armazene em um Map<String, Long>.

8 - Dada a lista de produtos acima, encontre o produto mais caro de cada categoria e armazene o resultado em um Map<String, Optional<Produto>>.

9 - Dada a lista de produtos acima, calcule o total dos preços dos produtos em cada categoria e armazene o resultado em um Map<String, Double>.

2 respostas

Oi, Juliana! Tudo bem? Vamos lá, vou tentar te ajudar com os exercícios 7, 8 e 9 usando Java Streams.

  • Exercício 7: Para contar quantos produtos há em cada categoria e armazenar em um Map<String, Long>, podemos usar o método Collectors.groupingBy junto com Collectors.counting(), como no exemplo abaixo:
Map<String, Long> contagemPorCategoria = produtos.stream()
    .collect(Collectors.groupingBy(Produto::getCategoria, Collectors.counting()));
  • Exercício 8: Já para encontrar o produto mais caro de cada categoria, podemos usar Collectors.groupingBy junto com Collectors.maxBy e Comparator.comparingDouble:
Map<String, Optional<Produto>> produtoMaisCaroPorCategoria = produtos.stream()
    .collect(Collectors.groupingBy(Produto::getCategoria,
        Collectors.maxBy(Comparator.comparingDouble(Produto::getPreco))));
  • Exercício 9: Por fim, para calcular o total dos preços dos produtos em cada categoria, podemos usar Collectors.groupingBy junto com Collectors.summingDouble da seguinte forma:
Map<String, Double> totalPrecoPorCategoria = produtos.stream()
    .collect(Collectors.groupingBy(Produto::getCategoria,
        Collectors.summingDouble(Produto::getPreco)));

Espero ter ajudado!

Um forte abraço e bons estudos!

Muito obrigada Sarah ajudou bastante =)