2
respostas

Velocidade da Busca

Confesso que fiquei um pouco confuso com a questão da velocidade da busca.

O arraylist faz busca por um elemento específico na mesma velocidade que o HashSet Na busca a seguir a velocidade é praticamente igual para os dois:

for (Integer numero : numeros) {
            numeros.contains(5);
        }

Pelo que entendi então o HashSet faz mais buscas simultâneas mais rápido então? Seria isso? E tem algum exemplo real disso?

2 respostas

Não, o "tempo" não é igual. HashSet possui uma complexidade de O(1) e ArrayList possui uma complexidade de O(n). O tempo médio de busca do ArrayList depende do número de elementos do array; o tempo médio de busca do HashSet é constante, não depende do número de elementos.

Você notará a diferença se: (1) Usar número de elementos grandes, algo em torno de pelo menos 100000. (2) Tipos cujo tempo de comparação seja maior que números inteiros. (3)Loops de busca longos

Você pode fazer o seguinte: (1) Define variáveis para armazenar o tamanho da String, número de elementos das coleções e o número de busca. (2)Cria Strings aleatórias. O início precisa ser igual, tipo 1000 vezes a letra A. O final variável, por exemplo um número aleatório. Coloca as Strings no ArrayList e HashSet. (3)Antes de começar cada loop de busca, armazena a data - hora. Logo que termina o loop armazena a data-hora final. E imprime a diferença. (4) loops de busca: o primeiro elemento do ArrayList, último elemento do ArrayList, um elemento aleatório e/ou o elemento do meio do ArrayList- depois busca os mesmos elementos no HashSet

Obrigado. Vou dar uma olhada depois com calma para entender o que acontece nesse processo!