Comparação LinkedList e ArrayList

Olá pessoal, apesar de estar muito ocupado por esses últimos dias, estou tentando não me manter afastado do blog por muito tempo. Esses últimos dias, li uns artigos legais do meu amigo Túlio Castro sobre a performance em iteradores e performance com Strings. Juntamente com isso, na empresa onde trabalho tive que reformular um código que estava demorando um tempinho a mais.

Consegui melhorar bastante, mas sei que ainda pode melhorar mais. Nesse código eu usava muitas listas do tipo LinkedList, e foi então que decidi fazer alguns testes para compará-la com a ArrayList.

Fiz duas classes muito simples, uma usando LinkedList e outra usando ArrayList, que basicamente faziam o seguinte:

Uma iteração que adicionava 1000000 (um milhão) de registros na lista


for(int i=0;i<=1000000;i++){
lista.add(i);
}

Outra iteração que removia 1000 registros da lista


for(int i=0;i<=1000;i++){
lista.remove(i);
}

E por fim uma iteração simples na lista. Fiz esse teste uma série de vezes e tirei a média.


for(Integer numero:lista){
numero = numero;
}

O resultado foi o seguinte:

Gráfico

Então o que pude concluir foi que, para a simples manipulação de dados, inserção e iteração, o melhor a fazer é usar ArrayList. Agora, se for modificar o conteúdo da lista, como excluir registros, o melhor é usar LinkedList.

Este foi um post rápido mas que espero que seja de grande utilidade a todos.

Até a próxima!

4 Responses to “Comparação LinkedList e ArrayList”

  1. Muito boa comparação. Extremamente necessário saber fazer os usos dessas classes de acordo com a necessidade.

    Agora mais uma curiosidade para ajudar nesse post,

    se você mudar para 30 mil registros, ou mais, esse tempo vai passar para alguns segundos, certo ?

    Agora mude de ArrayList para HashSet, que você vai ver a diferença.

    Abraço muito bom post.

  2. Ótimo post, sempre existe esse tipo de dúvida para collections, e como o list tem varias implementações, acabamos usando uma mesma implementação sempre, sem analisar qual implementação é a mais interessante para o que estamos fazendo. Uma idéia de post interessante que você poderia fazer seria um guia de acesso rápido com as condições para identificar qual collection e qual implementação é a mais interessante para o que estamos fazendo. Abraços!

  3. Denis Alves diz:

    Boa Tarde!

    A implementação da listas foi feita de que forma ?
    ArrayList lista = new ArrayList();
    LinkedList lista = new LinkedList();

    Ou por meio de Polimorfismo ?.
    List lista = new ArrayList();
    List lista = = new LinkedList();

  4. Boa tarde Denis,
    Da primeira maneira.

Leave a Reply

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

*

Pode usar estas etiquetas HTML e atributos: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>