Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Implementação do exercício proposto

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
1 resposta
solução!

Fala Matheus, tudo certo?

Muito legal! É muito interessante conhecer todas as coleções e como elas funcionam debaixo dos panos, justamente por essas questões de performance que variam muito devido às suas implementações, e saber qual coleção usar pode ajudar, e muito, a performance das suas aplicações!

Parabéns pela dedicação e lembre-se que você pode sempre contar com o fórum para tirar suas dúvidas e compartilhar sua evolução, adoramos acompanhar sua trajetória!

Um grande abraço e bons estudos!