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!