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.
ListaArray | Lista 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.