Guía práctica para entender y usar LinkedList en tus proyectos

| Última modificación: 28 de noviembre de 2024 | Tiempo de Lectura: 4 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿Te está costando manejar esas listas de elementos en las que hay muchas inserciones y eliminaciones? Pues con LinkedList en Java, una de las estructuras de datos más potentes que tiene este lenguaje de programación, ya no sufrirás más. Cuando logras entender sus métodos y características, es sorprendente lo mucho que logras optimizar tus programas, además de que aprovechas al máximo sus beneficios. Te cuento qué es y cómo se usa en esta guía para aprender a programar con Java.

LinkedList en Java

¿Qué es LinkedList en Java?

El paquete java.util trajo consigo LinkedList, una clase con la que puedes crear listas donde cada elemento está vinculado a los elementos anteriores y siguientes, es decir, forma una “lista doblemente enlazada”. Sí, suena un poco confuso, pero es muy fácil de entender.

Debes saber que en una LinkedList cada elemento, también llamado “nodo”, contiene dos referencias: una al siguiente nodo y otra al anterior. Así es más fácil llevar a cabo la tarea de insertar o eliminar elementos en cualquier parte de la lista, porque deja de ser necesario mover el resto de los elementos, como sí pasa en un ArrayList.

Lo grandioso de esta estructura de datos, es que te permite trabajar con listas genéricas. De modo que puedes almacenar cualquier tipo de dato, como cadenas de texto (String), números enteros (Integer), o incluso objetos personalizados que tú mismo crees.

¿Cómo se utiliza LinkedList en Java?

Para usar LinkedList en Java, primero necesitas importarla:

import java.util.LinkedList;

Una vez importada, puedes crear un objeto de tipo LinkedList. En este caso, vamos a crear una lista de cadenas de texto (String):

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

Añade elementos a la lista

Para agregar elementos a una LinkedList es necesario que uses el método add(). Este método inserta un nuevo elemento al final de la lista:

lista1.add("Juan");
lista1.add("Luis");
lista1.add("Carlos");

Con esto, hemos añadido tres nombres a nuestra lista. Ahora, si quieres visualizar los elementos de la lista, puedes recorrerla con un bucle for o utilizando un método específico para imprimirla.

public static void imprimir(LinkedList<String> lista) {
for (String elemento : lista) {
System.out.print(elemento + "-");
}
System.out.println();
}

Inserta un elemento en una posición específica

Además del método add(), LinkedList también ofrece una versión sobrecargada de este método, que te permite insertar un elemento en una posición específica.

Esto se hace pasando dos parámetros: el índice en el que se debe insertar el elemento y el valor a almacenar:

lista1.add(1, "Ana");

Como ves, se inserta el nombre “Ana” en la segunda posición de la lista (el índice 1). Así, los elementos de la lista se desplazan automáticamente hacia la derecha.

Elimina elementos

Cuando vayas a eliminar elementos de una LinkedList tienes que usar el método remove(), el cual permite eliminar un elemento por su índice o por su valor.

Entonces, si quieres eliminar un elemento por su índice, puedes hacerlo así:

lista1.remove(0); // Elimina el primer elemento

También puedes eliminar un elemento específico por su valor:

lista1.remove("Carlos"); // Elimina el elemento "Carlos"

Consulta el tamaño de la lista

Con el método size() puedes conocer cuántos elementos tiene la lista. Este método devuelve el número de nodos (elementos) en la lista:

System.out.println("Cantidad de elementos en la lista:" + lista1.size());

Verifica si un elemento está en la lista

Para que sepas si un valor específico está presente en la lista, puedes utilizar el método contains(). Lo que hace es devolver true si el elemento se encuentra en la lista, o false en caso contrario:

if (lista1.contains("Ana")) {
System.out.println("El nombre 'Ana' está almacenado en la lista");
} else {
System.out.println("El nombre 'Ana' no está almacenado en la lista");
}

Obtén un elemento por su índice

Para acceder a un elemento específico dentro de la lista, puedes usar el método get(). Por ejemplo, si quieres obtener el segundo elemento, puedes hacerlo así:

System.out.println("El segundo elemento de la lista es:" + lista1.get(1));

Limpia la lista

Si en algún momento necesitas vaciar completamente la lista, el método clear() elimina todos los elementos que contiene:

lista1.clear();

Verifica si la lista está vacía

No olvides que también puedes comprobar si la lista está vacía utilizando el método isEmpty():

if (lista1.isEmpty()) {
System.out.println("La lista se encuentra vacía");
}

Ejemplo práctico

Te dejo este ejemplo para que practiques con LinkedList en Java. La idea es que crees una lista de String que contenga nombres de personas. Luego, tienes que realizar varias operaciones como agregar, eliminar, consultar y recorrer la lista.

Código completo del ejemplo:

import java.util.LinkedList;

public class EjemploLinkedList {

// Método para imprimir la lista
public static void imprimir(LinkedList<String> lista) {
for (String elemento : lista) {
System.out.print(elemento + " - ");
}
System.out.println(); // Salto de línea
}

public static void main(String[] args) {
// Crear una LinkedList para almacenar nombres
LinkedList<String> listaNombres = new LinkedList<>();

// Agregar elementos a la lista
listaNombres.add("Juan");
listaNombres.add("Luis");
listaNombres.add("Carlos");

// Imprimir la lista actual
System.out.println("Lista después de agregar nombres:");
imprimir(listaNombres);

// Insertar un nombre en una posición específica
listaNombres.add(1, "Ana"); // Insertar "Ana" en la posición 1
System.out.println("Lista después de insertar 'Ana' en la posición 1:");
imprimir(listaNombres);

// Eliminar un nombre por su índice
listaNombres.remove(0); // Eliminar el primer nombre (índice 0)
System.out.println("Lista después de eliminar el primer elemento:");
imprimir(listaNombres);

// Eliminar un nombre por su valor
listaNombres.remove("Carlos"); // Eliminar "Carlos"
System.out.println("Lista después de eliminar 'Carlos':");
imprimir(listaNombres);

// Consultar el tamaño de la lista
System.out.println("Cantidad de elementos en la lista: " + listaNombres.size());

// Verificar si un nombre está en la lista
if (listaNombres.contains("Ana")) {
System.out.println("El nombre 'Ana' está en la lista.");
} else {
System.out.println("El nombre 'Ana' no está en la lista.");
}

// Obtener un nombre por su posición
String segundoNombre = listaNombres.get(1); // Obtener el segundo nombre
System.out.println("El segundo nombre de la lista es: " + segundoNombre);

// Limpiar la lista
listaNombres.clear();
System.out.println("Lista después de limpiarla:");
imprimir(listaNombres);

// Verificar si la lista está vacía
if (listaNombres.isEmpty()) {
System.out.println("La lista está vacía.");
}
}
}

Aprende mucho más sobre Java y otras herramientas clave para el desarrollo web en el Bootcamp de Java Full Stack de KeepCoding. Te explicaré cómo manejar LinkedList, trabajar con bases de datos, frameworks modernos y mucho más, en un entorno dinámico y con proyectos reales que potenciarán tu carrera como desarrollador.

Ramón Maldonado

Full Stack Developer y Responsable de Formación base en KeepCoding.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Java y Spring Boot

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado