logo

Diferencia entre ArrayList y LinkedList

ArrayList y LinkedList implementan la interfaz List y mantienen el orden de inserción. Ambas son clases no sincronizadas.

código abs c

Sin embargo, existen muchas diferencias entre las clases ArrayList y LinkedList que se detallan a continuación.

Lista de arregloLista enlazada
1) ArrayList utiliza internamente un matriz dinámica para almacenar los elementos.LinkedList utiliza internamente un lista doblemente enlazada para almacenar los elementos.
2) La manipulación con ArrayList es lento porque internamente utiliza una matriz. Si se elimina algún elemento de la matriz, todos los demás elementos se desplazan a la memoria.La manipulación con LinkedList es más rápido que ArrayList porque utiliza una lista doblemente enlazada, por lo que no se requiere desplazamiento de bits en la memoria.
3) Una clase ArrayList puede actuar como una lista solo porque implementa solo Lista.La clase LinkedList puede actuar como una lista y una cola ambos porque implementa interfaces List y Deque.
4) Lista de matrices es mejor para almacenar y acceder datos.Lista enlazada es mejor para manipular datos.
5) La ubicación de la memoria para los elementos de una ArrayList es contigua.La ubicación de los elementos de una lista enlazada no es contagiosa.
6) Generalmente, cuando se inicializa una ArrayList, se asigna una capacidad predeterminada de 10 a la ArrayList.No existe ningún caso de capacidad predeterminada en una LinkedList. En LinkedList, se crea una lista vacía cuando se inicializa una LinkedList.
7) Para ser precisos, una ArrayList es una matriz de tamaño variable.LinkedList implementa la lista doblemente enlazada de la interfaz de lista.

Ejemplo de ArrayList y LinkedList en Java

Veamos un ejemplo simple en el que usamos ArrayList y LinkedList.

Nombre del archivo: 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); } } 
Pruébalo ahora

Producción:

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

Puntos para recordar

Los siguientes son algunos puntos importantes que debe recordar con respecto a ArrayList y LinkedList.

  • Cuando la tasa de adición o eliminación sea mayor que la de los escenarios de lectura, opte por LinkedList. Por otro lado, cuando la frecuencia de los escenarios de lectura es mayor que la tasa de adición o eliminación, ArrayList tiene prioridad sobre LinkedList.
  • Dado que los elementos de una ArrayList se almacenan de manera más compacta en comparación con una LinkedList; por lo tanto, ArrayList es más compatible con el caché en comparación con LinkedList. Por lo tanto, las posibilidades de que se pierda el caché son menores en una ArrayList en comparación con una LinkedList. Generalmente, se considera que una LinkedList tiene poca localidad de caché.
  • La sobrecarga de memoria en LinkedList es mayor en comparación con ArrayList. Esto se debe a que, en una LinkedList, tenemos dos enlaces adicionales (siguiente y anterior), ya que es necesario almacenar la dirección del nodo anterior y siguiente, y estos enlaces consumen espacio adicional. Estos enlaces no están presentes en una ArrayList.