Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
1
resposta

[Dúvida] diferença entre uma Lista (Array/List) e um Conjunto (Set)

Qual é a diferença entre uma Lista (Array/List) e um Conjunto (Set) na programação, e quando devo escolher um em vez do outro?

1 resposta
solução!

Oi, Tiago. Tudo bem?

Essa é uma daquelas dúvidas clássicas que todo mundo que está avançando na programação encara. É um excelente ponto de partida para entender como estruturar melhor os seus dados.

Para te ajudar a visualizar de um jeito bem prático, imagine que você está organizando a sua rotina e as suas coisas. A diferença principal entre os dois está em como eles guardam e como eles tratam as informações.

Vamos quebrar isso juntos:

1. Lista (Array ou List)

Imagine a lista de compras do supermercado ou o histórico de mensagens do seu celular.

  • A ordem importa: O primeiro item que você coloca continua sendo o primeiro, o segundo continua sendo o segundo, e assim por diante. Cada um tem uma "posição" fixa (que chamamos de índice ou index).
  • Duplicatas são bem-vindas: Se você colocar "Café" duas vezes na lista, ele vai aparecer duas vezes. Não há nenhum bloqueio contra repetições.
  • Quando usar: Quando a sequência dos fatos é importante. Por exemplo: o histórico de navegação de um usuário, uma fila de atendimento onde quem chega primeiro é atendido primeiro, ou uma lista de notas de um aluno.

2. Conjunto (Set)

Agora, imagine uma caixa onde você guarda moedas de países diferentes. Se você já tem uma moeda de 1 Real e tenta colocar outra de 1 Real, no fim das contas você ainda só tem "a moeda do Brasil" representada ali como categoria.

  • Apenas itens únicos: O Set barra qualquer tentativa de duplicar um dado. Se você tentar inserir o número 5 dez vezes, ele vai guardar o número 5 apenas uma vez.
  • Sem ordem garantida: Na maioria das linguagens, o Set não se importa com a ordem em que você colocou os itens. Ele espalha os elementos na memória de um jeito próprio para conseguir achá-los muito rápido depois. Por isso, você geralmente não consegue acessar um item dizendo "me dê o elemento da posição 3".
  • Velocidade pura: Como ele usa uma estrutura interna especial, checar se um item existe dentro de um Set é quase instantâneo, mesmo que ele tenha milhões de registros. Em uma lista, o programa precisa ler item por item até achar.
  • Quando usar: Quando você precisa garantir que nada se repita ou quando precisa fazer buscas muito rápidas. Por exemplo: uma lista de CPFs cadastrados, os e-mails dos usuários que se inscreveram em uma newsletter, ou para descobrir quantos elementos distintos existem em um grupo.

Se você precisa manter o histórico exato das ações do seu cliente na plataforma de vendas, vá de Lista. Se você precisa apenas de uma listagem com os IDs únicos dos produtos que estão em falta no estoque, sem repetições, vá de Set.

Espero que essa explicação clareie os seus códigos por aí!

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