Todo mundo falando que o exemplo é ruim (de fato é). Vou dar um exemplo real.

Numa determinada rotina tinha algo assim (java):

if (!codigos.contains(codigo)) {
  codigos.add(codigo);
  rotina(codigo);
}

A questão é que códigos acima era um List. Trocamos por um HashSet e o codigo final ficou

if (codigos.add(codigo)) {
  rotina(codigo);
}

Ou seja, se add retornar true é porque o elemento não existia no set e foi adicionado então podemos rodar a rotina. Como tinha bastante elementos a diferença foi muito perceptível.

Ótimo exemplo! Esse caso ilustra bem como a escolha correta da estrutura de dados pode impactar a performance. Usar um HashSet em vez de uma List para verificar e armazenar elementos reduz o tempo de busca de O(n) para O(1) na maioria dos casos, tornando o código mais eficiente, especialmente em conjuntos grandes.

A ideia do post era justamente reforçar a importância de entender essas diferenças, mas concordo que o exemplo escolhido não foi o melhor. Valeu por compartilhar um caso real que demonstra bem esse princípio!

Obrigado pelo comentario!