Boa tarde Jean,
Segue abaixo nos comentários:
package java_orientacao_objeto;
import java.util.ArrayList; import java.util.Collection;
public class TestaPerformance {
public static void main(String[] args) {
System.out.println("Iniciando");
Collection teste = new ArrayList(); // criando lista long
inicio = System.currentTimeMillis(); // iniciando variavel inicio com tempo
int total = 30000; // iniciando variavel total
for (int i = 0; i < total; i++) { //Iniciando for e atribuindo a comparação
teste.add(i); // Adicionando na lista
}
for (int i = 0; i < total; i++) { // iniciando segundo for
teste.contains(i); // o método contains verifica se o elemente passado por parâmetro existo dentro da coleção, ou seja, faz uma busca na coleção, para ver se acha aquele valor dentro dela.
}
long fim = System.currentTimeMillis();
long tempo = fim - inicio; // o método acima obtém a hora do sistema em milisegundos e coloca numa variável long, logo, se você tem duas varáveis long com algum horário em milisegundos e subtrair um pelo outro, a diferença desta subtração é o tempo que levou este processamento em milisegundos
System.out.println("Tempo gasto" + tempo); }
}
Agora sendo mais específico, isso servirá para você diferenciar o quão custoso em termos de desempenho é para um programa Java adicionar 30 mil número inteiros, e depois buscar 30 mil vezes dentro desta coleção com uma implementação de ArrayList, e depois troque a implementação para HashSet, e veja a diferença no resultado de tempo total.
A conclusão a que você chegará é:
ArrayList é rápido para inserção dos elementos e mantém a ordem, mas é muito lento para operações de busca.
HashSet é rápido para inserção dos elementos (A lista é um pouco mais), não mantém a ordem, mas é muito rápido para operações de busca, muito mais que o outro. Seguindo no curso entenderá o porque de cada um.
Abraço.