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
- Crea una
LinkedList
de Strings. - Añade al menos 5 elementos a la lista.
- Elimina el tercer elemento de la lista.
- 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
- Introducción a Java
- Configuración del Entorno de Desarrollo
- Sintaxis y Estructura Básica
- Variables y Tipos de Datos
- Operadores
Módulo 2: Flujo de Control
Módulo 3: Programación Orientada a Objetos
- Introducción a la POO
- Clases y Objetos
- Métodos
- Constructores
- Herencia
- Polimorfismo
- Encapsulamiento
- Abstracción
Módulo 4: Programación Orientada a Objetos Avanzada
Módulo 5: Estructuras de Datos y Colecciones
Módulo 6: Manejo de Excepciones
- Introducción a las Excepciones
- Bloque Try-Catch
- Throw y Throws
- Excepciones Personalizadas
- Bloque Finally
Módulo 7: Entrada/Salida de Archivos
- Lectura de Archivos
- Escritura de Archivos
- Flujos de Archivos
- BufferedReader y BufferedWriter
- Serialización
Módulo 8: Multihilo y Concurrencia
- Introducción al Multihilo
- Creación de Hilos
- Ciclo de Vida de un Hilo
- Sincronización
- Utilidades de Concurrencia
Módulo 9: Redes
- Introducción a las Redes
- Sockets
- ServerSocket
- DatagramSocket y DatagramPacket
- URL y HttpURLConnection