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!