logo

Diferença entre ArrayList e LinkedList

ArrayList e LinkedList implementam a interface List e mantêm o pedido de inserção. Ambas são classes não sincronizadas.

chamando a função js de html

No entanto, existem muitas diferenças entre as classes ArrayList e LinkedList fornecidas a seguir.

ListaArrayLista vinculada
1) ArrayList usa internamente um matriz dinâmica para armazenar os elementos.LinkedList usa internamente um lista duplamente vinculada para armazenar os elementos.
2) A manipulação com ArrayList é lento porque usa internamente um array. Se algum elemento for removido do array, todos os outros elementos serão deslocados na memória.Manipulação com LinkedList é mais rápido do que ArrayList porque usa uma lista duplamente vinculada, portanto, nenhuma mudança de bit é necessária na memória.
3) Uma classe ArrayList pode agir como uma lista apenas porque implementa apenas List.A classe LinkedList pode atuar como uma lista e fila ambos porque implementa interfaces List e Deque.
4) ArrayList é melhor para armazenar e acessar dados.LinkedList é melhor para manipular dados.
5) A localização da memória para os elementos de um ArrayList é contígua.A localização dos elementos de uma lista encadeada não é contagiosa.
6) Geralmente, quando um ArrayList é inicializado, uma capacidade padrão de 10 é atribuída ao ArrayList.Não há caso de capacidade padrão em um LinkedList. No LinkedList, uma lista vazia é criada quando um LinkedList é inicializado.
7) Para ser mais preciso, um ArrayList é um array redimensionável.LinkedList implementa a lista duplamente vinculada da interface de lista.

Exemplo de ArrayList e LinkedList em Java

Vamos ver um exemplo simples onde estamos usando ArrayList e LinkedList.

Nome do arquivo: TestArrayLinked.java

 import java.util.*; class TestArrayLinked{ public static void main(String args[]){ List al=new ArrayList();//creating arraylist al.add('Ravi');//adding object in arraylist al.add('Vijay'); al.add('Ravi'); al.add('Ajay'); List al2=new LinkedList();//creating linkedlist al2.add('James');//adding object in linkedlist al2.add('Serena'); al2.add('Swati'); al2.add('Junaid'); System.out.println('arraylist: '+al); System.out.println('linkedlist: '+al2); } } 
Teste agora

Saída:

arraylist: [Ravi,Vijay,Ravi,Ajay] linkedlist: [James,Serena,Swati,Junaid] 

Pontos para lembrar

A seguir estão alguns pontos importantes a serem lembrados em relação a ArrayList e LinkedList.

  • Quando a taxa de adição ou remoção for maior do que os cenários de leitura, vá para o LinkedList. Por outro lado, quando a frequência dos cenários de leitura é maior que a taxa de adição ou remoção, então ArrayList tem precedência sobre LinkedList.
  • Como os elementos de um ArrayList são armazenados de forma mais compacta em comparação com um LinkedList; portanto, o ArrayList é mais amigável ao cache em comparação com o LinkedList. Assim, as chances de perda de cache são menores em um ArrayList em comparação com um LinkedList. Geralmente, considera-se que um LinkedList é pobre em localidade de cache.
  • A sobrecarga de memória no LinkedList é maior em comparação com o ArrayList. Isso ocorre porque, em um LinkedList, temos dois links extras (próximo e anterior), pois são necessários para armazenar o endereço do nó anterior e do próximo, e esses links consomem espaço extra. Esses links não estão presentes em um ArrayList.