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

Dúvida sobre o Map

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?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

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!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software