ArrayList vs LinkedList en Java.

Icono play
Java
Diferencias entre ArrayList y LinkedList

Cuando tenemos que hacer un programa en el que debemos usar una lista, nos surge la duda de que clase usar, ArrayListLinkedList.

Vamos a ver las diferencias entre ambas.

Diferencias entre ArrayList y LinkedList en Java

¿Qué es un ArrayList en Java?

Un ArrayList es una matriz dinámica que nos permite almacenar datos e incrementa su tamaño de acuerdo a la necesidad de forma automática, en ella podemos agregar, borrar y buscar elementos accediendo a ellos por su número de índice.

¿Qué es un LinkedList en Java?

Un LinkedList es una lista enlazada de elementos, similar al ArrayList, pero a diferencia de este que guarda los datos en una matrizLinkedList lo hace de manera lineal almacenando la información en posiciones de memoria que no son contiguas y en elementos nodo, donde cada elemento contiene datos y un puntero direccionado a uno de sus elementos vecinos o a ambos (hacia atrás y hacia adelante), de esta forma se elimina la necesidad de ordenar los elementos en la memoria. 

En una lista enlazada (LinkedList) no se puede acceder de forma directa a un elemento, ya que para acceder a un elemento en la ubicación n, debemos recorrer toda la lista de forma lineal, hasta llegar a dicha posición, mientras que en una matriz (ArrayList) el acceso a cada elemento es por su índice, lo que evita tener que recorrer en forma lineal, solo se solicita la posición deseada (índice) y se accede a ella. 

ArrayListLinkedList  implementan la interface List del paquete java.util y por lo tanto tendrán los métodos propios de esta interface y que son comunes a todas las implementaciones.

Se pone de manifiesto aquí la utilidad que tiene el uso de interfaces, ya que usando los mismos métodos, podemos tener varias implementaciones diferentes, de acuerdo a la necesidad que tenga nuestra aplicación.

ArrayList vs LinkedList en Java

LinkedListArrayList
Se pueden agregar elementos indefinidamenteUna vez llena la matriz, debe incrementarse su tamaño
Eliminar elementos es más eficaz, no deja espacios vacíosAl eliminar un elemento, se borra el contenido, pero el espacio de memoria queda ocupado y no puede usarse nuevamente
Solo acceso secuencial de los elementos, por lo tanto es más lentoAcceso aleatorio a los datos por medio de su índice, así el acceso es más rápido
Utiliza más almacenamiento de memoria en la computadora, ya que no solo contiene el dato, sino también la dirección del próximo nodoEl espacio que ocupa en memoria es más reducido, porque contiene menos información
Debe usarse en listas grandes, donde la totalidad de elementos y su contenido se desconoce.Debe usarse para pequeñas listas, donde se conocen sus elementos

Cuando usar ArrayList y cuándo usar LinkedList

Ambas clases tienen ventajas y desventajas dependiendo del uso que le daremos a la lista.

Si necesitamos acceder a elementos aleatorios o introducir nuevos elementos en posiciones específicas un ArrayList es lo más conveniente por su acceso por índices.

Si el uso más importante del array dinámico es la inserción en la primera o última posición de la lista y eliminación de uno o varios elementos, LinkedList es mucho más veloz y utiliza menos recursos del sistema.

Por el contrario, una particular desventaja de ArrayList, es que la eliminación de un elemento de la matriz borra el contenido, pero la posición queda vacía y no puede volver a utilizarse, esto no sucede con las listas enlazadas, la posición vacía vuelve a llenarse con un nuevo dato.

En cuanto a búsqueda es más veloz un ArrayList, porque lo hace a través del índice del elemento, mientras que LinkedList, debe hacerlo de forma lineal, recorriendo uno a uno los nodos hasta hallar el elemento deseado.

En caso de desconocer el tipo de operación que tendrá la lista, será más adecuado utilizar un ArrayList.

Más sobre LinkedList en Java

LinkedList tiene varias opciones de navegación entre elementos:

  • Simple LinkedListrecorre la lista solo hacia adelante.
  • Double LinkedListrecorrido hacia adelante y hacia atrás entre elementos.
  • Circular LinkedList, el recorrido se presenta de forma circular, desde el último elemento que se enlaza con el primer elemento y este con el siguiente, y luego el último se enlaza con su anterior inmediato.

Métodos de las listas enlazadas

  • addFirst() Agrega un elemento al principio de la lista.
  • addLast() Agrega un elemento al final de la lista.
  • removeFirst() Elimina un ítem al principio de la lista.
  • removeLast() Elimina un ítem al final de la lista.
  • getFirst() Obtiene el elemento al principio de la lista.
  • getLast() Obtiene el último elemento de la lista.

Ejemplo de uso de LinkedList

import java.util.LinkedList;

public class linkedList {

public static void main(String[] args) {

           LinkedList<String> names = new LinkedList<String>();

           names.add("Sandra");

           names.add("Pablo");

           names.add("Juan");

           names.add("Maria");

           System.out.println(names);

       }

   }
¿Todavía no te has apuntado a nuestro Bootcamp?
Tenemos muchos cursos para ofrecerte y ¡TOTALMENTE GRATIS! Estos son algunos de ellos: