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

 Java |  copy code |? 
1
2
for(int i=0;i<=1000000;i++){
3
            lista.add(i);
4
}
5

Outra iteração que removia 1000 registros da lista

 Java |  copy code |? 
1
2
for(int i=0;i<=1000;i++){
3
            lista.remove(i);
4
}
5

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

 Java |  copy code |? 
1
2
for(Integer numero:lista){
3
            numero = numero;
4
}
5

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!

, , , , ,

  1. #1 by Túlio Castro on 15 de Maio de 2010 - 10:37

    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. #2 by Maurício Faustino on 18 de Maio de 2010 - 11:45

    Ó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!
(não será publicado)