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
LinkedListtiene 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
ArrayListcuando 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
LinkedListde 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
