Executando verificação de segurança...
1

armazenar objetos para buscá-los novamente de forma eficiente, evite usar listas

De forma geral, sim. Mas eu diria que depende.

Se a quantidade de elementos é pequena, e se forem feitas poucas buscas, tanto faz. Para poucos dados, tudo é rápido. Lembre-se que um Set possui um custo adicional, já que mantém internamente uma estrutura de dados específica para que as buscas sejam mais eficientes (no caso do HashSet, a documentação diz que internamente ele usa um HashMap). Se são poucos dados e poucas buscas, talvez nem compense - ou não faça diferença - usar Set ou List.

Por exemplo, se a lista estiver ordenada (como já disseram em outro comentário), uma busca binária é muito eficiente (mesmo se tiver 2 bilhões de elementos, no pior caso precisa de uns 30 passos para encontrar qualquer elemento).

Claro que um Set é uma excelente opção para uma grande quantidade de elementos e/ou se tiver muitas buscas a serem feitas (e se precisar de elementos ordenados, ainda tem a opção de usar TreeSet ou LinkedHashSet - o primeiro usa a ordem natural dos elementos, o segundo usa a ordem em que eles foram inseridos). Um detalhe é que um Set não permite elementos duplicados - então se você precisa manter elementos repetidos, aí não tem como escapar de usar uma lista.

Enfim, a grande lição é que toda e qualquer estrutura de dados possui características específicas, vantagens e desvantagens, e o mais importante é entender cada uma delas, e avaliar caso a caso qual a mais apropriada para cada situação (preciso de ordem específica? tem mais inserções, remoções, buscas? etc). No fim vale a famosa frase de Linus Torvalds:

"Bad programmers worry about the code. Good programmers worry about data structures and their relationships."

"Programadores ruins se preocupam com o código. Programadores bons se preocupam com estruturas de dados e seus relacionamentos."


Por fim, vale lembrar que usar System.currentTimeMillis() é uma forma simples de medir o tempo, porém muito sujeita a falhas. Existem formas mais assertivas de fazer esta medição - eu costumo usar o JMH - Java Microbenchmark Harness, mas existem várias outras libs para isso.

Carregando publicação patrocinada...
1

Cara que comentário massa, amigo. Com certeza vou tirar muitos tópicos de estudo e aporfundamento daqui. Obrigado sempre pelas correções, a cada dia procuro avançar um pouquinho nessa jornada maravilhosa no mundo da programação

Valeu mn😄