Por que listas grandes são ruins (Java)?
⚠️ O problema das listas
Quando estamos começando os estudos de programação, uma das primeiras estruturas de dados organizada que aprendemos são as listas,que permitem criar um espaço na memória pra armazenar na memória um conjunto de objetos
Desde então, passamos a usar listas em qualquer lugar do código onde faça sentido. No entanto, listas têm um problema muito grande: Elas são péssimas para pesquisas.
No código exemplo Cronometramos o tempo que leva pra um programa em java buscar 30.000 elementos em uma lista e verificar se eles existem:
import java.util.*;
class Teste {
public static void main(String[] args) {
System.out.println("\n\nStarting... \n");
Collection<Integer> lista = new ArrayList<>();
int qtde = 300000;
for(int i = 0; i <= qtde; i++) {
lista.add(i);
}
long inicio = System.currentTimeMillis();
for(int i = 0; i <= qtde; i++) {
lista.contains(i);
}
long fim = System.currentTimeMillis();
long tempo = fim - inicio;
System.out.println("\nTempo de excecucao: " + tempo + " ms");
}
}
Geralmente o programa levará um tempo relativamente grande para percorrer todas as posições
No entanto, modificando a declaração da lista:
Collection<Integer> lista = new HashSet<>();
Percebemos um ganho absurdo na parte de buscar um objeto rapidamente.
E o pior: mude de 30,000 para 300,000. Veremos que o programa simplesmente para no tempo. Rodando um tempao sem retornar nada. Portanto, quando o assunto é armazenar objetos para buscá-los novamente de forma eficiente, evite usar listas.