Introducción

En Java, una LinkedList es una estructura de datos que permite almacenar elementos de manera secuencial, pero a diferencia de un ArrayList, los elementos no están almacenados en un bloque contiguo de memoria. En su lugar, cada elemento (nodo) contiene una referencia al siguiente nodo en la lista, lo que permite una inserción y eliminación de elementos más eficiente en ciertas situaciones.

Características de LinkedList

  • Doble Enlace: Cada nodo en una LinkedList tiene referencias tanto al nodo anterior como al siguiente.
  • No Contigua: Los elementos no están almacenados en posiciones de memoria contiguas.
  • Eficiencia en Inserciones/Eliminaciones: Las operaciones de inserción y eliminación son más eficientes en comparación con un ArrayList cuando se realizan en el medio de la lista.

Sintaxis Básica

Para utilizar una LinkedList en Java, primero debes importarla desde el paquete java.util.

import java.util.LinkedList;

public class LinkedListExample {
    public static void main(String[] args) {
        // Crear una LinkedList de Strings
        LinkedList<String> list = new LinkedList<>();

        // Añadir elementos a la LinkedList
        list.add("Elemento 1");
        list.add("Elemento 2");
        list.add("Elemento 3");

        // Imprimir la LinkedList
        System.out.println(list);
    }
}

Operaciones Comunes

Añadir Elementos

Puedes añadir elementos al final de la lista, al principio, o en una posición específica.

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

// Añadir al final
list.add("Elemento 1");

// Añadir al principio
list.addFirst("Elemento 0");

// Añadir en una posición específica
list.add(1, "Elemento 1.5");

Acceder a Elementos

Puedes acceder a los elementos de la LinkedList utilizando métodos como get, getFirst, y getLast.

// Obtener el primer elemento
String firstElement = list.getFirst();

// Obtener el último elemento
String lastElement = list.getLast();

// Obtener un elemento en una posición específica
String specificElement = list.get(1);

Eliminar Elementos

Puedes eliminar elementos del principio, del final, o de una posición específica.

// Eliminar el primer elemento
list.removeFirst();

// Eliminar el último elemento
list.removeLast();

// Eliminar un elemento en una posición específica
list.remove(1);

Iterar a través de la LinkedList

Puedes iterar a través de una LinkedList utilizando un bucle for-each o un iterador.

// Usando un bucle for-each
for (String element : list) {
    System.out.println(element);
}

// Usando un iterador
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    System.out.println(iterator.next());
}

Ejemplo Práctico

Vamos a crear un ejemplo práctico donde utilizamos una LinkedList para gestionar una lista de tareas.

import java.util.LinkedList;

public class TaskManager {
    public static void main(String[] args) {
        LinkedList<String> tasks = new LinkedList<>();

        // Añadir tareas
        tasks.add("Comprar comestibles");
        tasks.add("Lavar el coche");
        tasks.add("Estudiar Java");

        // Imprimir todas las tareas
        System.out.println("Lista de Tareas: " + tasks);

        // Completar la primera tarea
        String completedTask = tasks.removeFirst();
        System.out.println("Tarea completada: " + completedTask);

        // Imprimir las tareas restantes
        System.out.println("Tareas restantes: " + tasks);
    }
}

Ejercicio Práctico

Ejercicio 1: Gestión de una Lista de Compras

Crea una LinkedList para gestionar una lista de compras. Debe permitir añadir elementos, eliminar elementos específicos y mostrar la lista completa.

Instrucciones

  1. Crea una LinkedList de Strings.
  2. Añade al menos 5 elementos a la lista.
  3. Elimina el tercer elemento de la lista.
  4. Imprime la lista completa.

Solución

import java.util.LinkedList;

public class ShoppingList {
    public static void main(String[] args) {
        LinkedList<String> shoppingList = new LinkedList<>();

        // Añadir elementos a la lista de compras
        shoppingList.add("Leche");
        shoppingList.add("Pan");
        shoppingList.add("Huevos");
        shoppingList.add("Mantequilla");
        shoppingList.add("Queso");

        // Eliminar el tercer elemento (índice 2)
        shoppingList.remove(2);

        // Imprimir la lista completa
        System.out.println("Lista de Compras: " + shoppingList);
    }
}

Conclusión

En esta sección, hemos aprendido sobre la LinkedList en Java, sus características, y cómo realizar operaciones comunes como añadir, acceder, eliminar e iterar a través de los elementos. También hemos visto un ejemplo práctico y un ejercicio para reforzar los conceptos aprendidos. En el siguiente módulo, exploraremos otras estructuras de datos y colecciones en Java.

Curso de Programación en Java

Módulo 1: Introducción a Java

Módulo 2: Flujo de Control

Módulo 3: Programación Orientada a Objetos

Módulo 4: Programación Orientada a Objetos Avanzada

Módulo 5: Estructuras de Datos y Colecciones

Módulo 6: Manejo de Excepciones

Módulo 7: Entrada/Salida de Archivos

Módulo 8: Multihilo y Concurrencia

Módulo 9: Redes

Módulo 10: Temas Avanzados

Módulo 11: Frameworks y Librerías de Java

Módulo 12: Construcción de Aplicaciones del Mundo Real

© Copyright 2024. Todos los derechos reservados