Estructuras de Datos en Java: Explorando Clases Core y Collections Framework
El paquete de utilidades de Java (java.util) proporciona estructuras de datos potentes. Las clases "legacy" (pre-Java 2) son:
EnumerationBitSetVectorStackDictionaryHashtableProperties
Java 2 introdujo el Collections Framework (marco de colecciones), que unifica y mejora estas estructuras. Se trata en el siguiente capítulo.
Interfaces y Clases Legacy
Enumeration
No es una estructura de datos per se, sino una interfaz para recorrer elementos sucesivamente. Define nextElement() para obtener el siguiente elemento.
BitSet
Implementa un conjunto de bits/flags que pueden establecerse/limpiarse individualmente. Útil para conjuntos de valores booleanos (un bit por valor).
Vector
Similar a un array tradicional, pero crece automáticamente al añadir elementos. Acceso por índice. Ventaja: no hay que fijar tamaño inicial.
Stack
Implementa una pila LIFO (Last-In-First-Out). Extiende Vector. Operaciones: push(), pop(), peek(), empty(), search().
Dictionary
Clase abstracta que define mapeo clave-valor. Proporciona solo el marco; no implementación concreta. Sustituida por Map en Collections Framework.
Hashtable
Implementación concreta de Dictionary. Organiza datos con una estructura de hash definida por el usuario. Ejemplo: agenda indexada por código postal en lugar de nombre.
Properties
Subclase de Hashtable. Clave y valor son String. Usada por System.getProperties() para variables de entorno.
Migración al Collections Framework
Las clases legacy siguen funcionando pero se recomienda usar el Collections Framework (List, Set, Map, ArrayList, HashMap, etc.) por:
- Diseño unificado con interfaces claras.
- Mejor rendimiento y flexibilidad.
- Algoritmos polimórficos (ordenación, búsqueda).
- Iteradores estándar (
Iterator,ListIterator).
Ver próximo capítulo: "Mastering Java Collections".
Java
- Palabra clave final en Java: Variables, métodos y clases
- Operador instanceof en Java: Guía completa
- Dominando la encapsulación en Java: Guía práctica de ocultamiento de datos
- Entendiendo las clases anidadas estáticas en Java: Uso, diferencias y ejemplos
- Dominando las clases internas anónimas en Java: Definición, sintaxis y ejemplos prácticos
- Patrón Singleton en Java explicado: Cómo implementarlo y usarlo de forma segura
- Dominando la Reflexión en Java: Inspeccionando clases, métodos y campos en tiempo de ejecución
- Dominando ObjectOutputStream de Java: Serialización, Métodos y Ejemplos Prácticos
- Dominando Java Generics: Construyendo Código Reutilizable y Type-Safe
- Dominando las operaciones de archivos en Java con java.io: creación, lectura, escritura y eliminación
- Estructuras de Datos en Java: Explorando Clases Core y Collections Framework