Oi, pessoal! Não entendi muito bem o que foi feito nesse trecho de código, o que é essa coleção de dados 'Map' e tb os comandos que foram utilizados (Collectors.groupingBy, etc...). Poderiam me explicar com mais detalhes, por favor?
Oi, pessoal! Não entendi muito bem o que foi feito nesse trecho de código, o que é essa coleção de dados 'Map' e tb os comandos que foram utilizados (Collectors.groupingBy, etc...). Poderiam me explicar com mais detalhes, por favor?
Oi, Miguel, tudo bem?
O Map é uma interface do Java que faz parte do framework de coleções. Ela armazena os dados em pares de chave e valor. Cada chave é única, e a ela está associado um valor. No contexto do código da aula, o Map<Integer, Double> representa um mapa onde cada chave é um Integer (representando a temporada de uma série) e cada valor é um Double (representando a média das avaliações daquela temporada).
O Collectors.groupingBy é um método da classe Collectors que é frequentemente usado com stream().collect() para realizar agrupamentos de dados. Neste caso, Episodio::getTemporada é usado como classificador, o que significa que os episódios serão agrupados pela temporada a que pertencem.
O Collectors.averagingDouble é outro coletor que calcula a média dos valores double fornecidos. Aqui, Episodio::getAvaliacao é uma função que extrai a avaliação de cada episódio, e averagingDouble calcula a média dessas avaliações.
Agora podemos explicar o código todo:
Map<Integer, Double> avaliacoesPorTemporada = episodios.stream()
.filter(e -> e.getAvaliacao() > 0.0)
.collect(Collectors.groupingBy(Episodio::getTemporada,
Collectors.averagingDouble(Episodio::getAvaliacao)));
System.out.println(avaliacoesPorTemporada);
episodios.stream(): cria um fluxo de dados a partir da lista de episódios..filter(e -> e.getAvaliacao() > 0.0): filtra os episódios para incluir apenas aqueles com avaliação maior que 0.0..collect(...): coleta os dados processados pelo stream.Collectors.groupingBy(Episodio::getTemporada, Collectors.averagingDouble(Episodio::getAvaliacao)): agrupa os episódios por temporada e calcula a média das avaliações para cada grupo (temporada).System.out.println(avaliacoesPorTemporada): imprime o mapa resultante, que contém a média das avaliações por temporada.Espero ter ajudado. Caso tenha dúvidas, conte com o fórum. Abraços!