1
resposta

[Dúvida] Qual seria melhor?

Sei que a solução proposta pelo instrutor para fins de didática faz muito mais sentido, uma vez que explora os conceitos das duas estruturas estudadas anteriormente, mas em termos práticos, qual seria a melhor solução, usar um hashset e depois uma lista? ou usar uma lista e o Distinct?

Segue minha implementação:

List<int> scores = [];

scores.Add(150);
scores.Add(90);
scores.Add(200);
scores.Add(120);
scores.Add(150);
scores.Add(80);
scores.Add(180);
scores.Add(200);

scores = scores.Distinct().ToList();
scores.Sort();

System.Console.WriteLine("Scores únicos em ordem crescente:");
foreach (int score in scores)
{
    System.Console.WriteLine(score);
}
1 resposta

Olá, Pedro, como vai?

O seu código funciona perfeitamente e resolve o desafio proposto utilizando recursos modernos do C#, como a sintaxe de coleção vazia e o método de extensão Distinct. Para cenários onde o volume de dados é muito grande, a escolha da estrutura impacta diretamente na performance. O uso de um HashSet durante a inserção é geralmente mais eficiente para garantir a unicidade, pois ele possui uma complexidade de busca constante, enquanto o Distinct precisa processar a lista completa ao final.

Uma alternativa ainda mais direta para este caso específico seria o SortedSet, que armazena apenas elementos únicos e mantém a ordenação automática a cada inserção, eliminando a necessidade de chamar um método de sorteio posteriormente.

Obrigado por compartilhar sua solução e questionamento, continue trazendo esse tipo de discussão para o fórum, ele está à disposição para aprofundarmos cada vez mais.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!