Minha implementação de código que testa a performance de adição e pesquisa de 50.000 e 100.000 elementos às Collections ArrayList, LinkedList e HashSet:
package br.com.alura.collections.test;
import java.util.*;
public class TestPerformance {
public static void main(String[] args) {
List<Integer> nElementsArrayList = Arrays.asList(50000, 100000);
List<Collection<Integer>> collections = new ArrayList<>();
collections.add(new ArrayList<Integer>());
collections.add(new LinkedList<Integer>());
collections.add(new HashSet<Integer>());
List<String> elementsName = Arrays.asList("ArrayList", "LinkedList", "HashSet");
int index = 0;
for (Collection<Integer> collection: collections) {
for (int nElements: nElementsArrayList) {
long addTime = add(collection, nElements);
System.out.format("O tempo gasto para adicionar %d elementos a um(a) %s foi de: %d ms", nElements, elementsName.get(index), addTime);
System.out.println();
long searchTime = search(collection);
System.out.format("O tempo gasto para pesquisar %d elementos a um(a) %s foi de: %d ms", nElements, elementsName.get(index), searchTime);
System.out.println();
System.out.println();
}
index += 1;
System.out.println();
}
}
public static long add(Collection<Integer> collection, int nElements) {
long beginTime = System.currentTimeMillis();
for (int i = 1; i<= nElements; i++) {
collection.add(i);
}
long endTime = System.currentTimeMillis();
long diffTime = endTime - beginTime;
return diffTime;
}
public static long search(Collection<Integer> collection) {
long beginTime = System.currentTimeMillis();
for (int i: collection) {
collection.contains(i);
}
long endTime = System.currentTimeMillis();
long diffTime = endTime - beginTime;
return diffTime;
}
}
Output:
O tempo gasto para adicionar 50000 elementos a um(a) ArrayList foi de: 7 ms
O tempo gasto para pesquisar 50000 elementos a um(a) ArrayList foi de: 1239 ms
O tempo gasto para adicionar 100000 elementos a um(a) ArrayList foi de: 6 ms
O tempo gasto para pesquisar 100000 elementos a um(a) ArrayList foi de: 6994 ms
O tempo gasto para adicionar 50000 elementos a um(a) LinkedList foi de: 6 ms
O tempo gasto para pesquisar 50000 elementos a um(a) LinkedList foi de: 3322 ms
O tempo gasto para adicionar 100000 elementos a um(a) LinkedList foi de: 13 ms
O tempo gasto para pesquisar 100000 elementos a um(a) LinkedList foi de: 31216 ms
O tempo gasto para adicionar 50000 elementos a um(a) HashSet foi de: 6 ms
O tempo gasto para pesquisar 50000 elementos a um(a) HashSet foi de: 7 ms
O tempo gasto para adicionar 100000 elementos a um(a) HashSet foi de: 39 ms
O tempo gasto para pesquisar 100000 elementos a um(a) HashSet foi de: 10 ms
Process finished with exit code 0