Saltar al contenido principal
Documentos
Java keywordsMatrices JavaProgramación orientada a objetos en JavaJava File HandlingIntroducción a JavaConceptos básicos del lenguaje Java

Java LinkedList

La clase LinkedList de Java forma parte del Marco de Colecciones de Java e implementa las interfaces List y Deque. Es una lista doblemente enlazada que proporciona una estructura de datos dinámica para almacenar elementos. A diferencia de las matrices, LinkedList permite insertar y eliminar elementos de forma eficaz tanto en los extremos como en el centro de la lista.

Utilización

LinkedList se utiliza cuando se necesitan inserciones y supresiones frecuentes. Es especialmente útil cuando no se conoce de antemano el tamaño de la lista o cuando hay que añadir o eliminar elementos en ambos extremos de la lista.

Syntax


LinkedList<Type> linkedList = new LinkedList<>();
  • Type: El tipo de elementos almacenados en la lista.
  • linkedList: El nombre de la instancia LinkedList.

Ejemplos

Ejemplo 1: Operaciones básicas


import java.util.LinkedList;

public class LinkedListExample {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();
        
        // Adding elements
        list.add("Apple");
        list.add("Banana");
        list.add("Cherry");
        
        // Accessing elements
        System.out.println("First element: " + list.getFirst());
        System.out.println("Last element: " + list.getLast());
        
        // Removing elements
        list.removeFirst();
        list.removeLast();
        
        System.out.println("List after removals: " + list);
    }
}

Este ejemplo demuestra operaciones básicas como añadir, acceder y eliminar elementos de un LinkedList. Añadimos tres frutas a la lista, accedemos a los elementos primero y último, y luego los eliminamos.

Ejemplo 2: Iterar a través de una lista enlazada


import java.util.LinkedList;
import java.util.Iterator;

public class LinkedListIteration {
    public static void main(String[] args) {
        LinkedList<Integer> numbers = new LinkedList<>();
        numbers.add(10);
        numbers.add(20);
        numbers.add(30);
        
        Iterator<Integer> iterator = numbers.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }
}

En este ejemplo, utilizamos un Iterator para recorrer el LinkedList de enteros. La página Iterator proporciona una forma de acceder a cada elemento secuencialmente.

Ejemplo 3: Utilizar LinkedList como cola


import java.util.LinkedList;
import java.util.Queue;

public class LinkedListAsQueue {
    public static void main(String[] args) {
        Queue<String> queue = new LinkedList<>();
        
        // Enqueue elements
        queue.add("First");
        queue.add("Second");
        queue.add("Third");
        
        // Dequeue elements
        System.out.println("Removed: " + queue.poll());
        System.out.println("Queue after removal: " + queue);
    }
}

Aquí, LinkedList se utiliza como Queue. Los elementos se añaden con add() y se eliminan con poll(), demostrando el comportamiento FIFO (primero en entrar, primero en salir).

Consejos y buenas prácticas

  • Cuándo utilizarlo: Utiliza LinkedList cuando necesites inserciones y supresiones frecuentes, especialmente al principio o al final de la lista.
  • Consideración del rendimiento: LinkedList tiene una sobrecarga mayor que ArrayList para acceder a los elementos por índice, debido a su naturaleza de acceso secuencial.
  • Elementos nulos: LinkedList permite elementos null, por lo que maneja posibles escenarios NullPointerException.
  • Seguridad de los hilos: LinkedList no está sincronizado. Utiliza Collections.synchronizedList(new LinkedList<>()) para operaciones seguras.
  • Operaciones Deque: Utiliza LinkedList como Deque para operaciones de doble cola, como addFirst(), addLast(), removeFirst() y removeLast().

Aprende Java Essentials

Desarrolla tus conocimientos de Java desde la base y domina los conceptos de programación.
Empieza a aprender gratis