¿Qué son las estructuras de almacenamiento?
Son formas organizadas de guardar y manejar datos. Por ejemplo, si tienes muchos números y quieres saber cuál es el mayor, necesitas un modo de guardarlos para después recorrerlos y compararlos.
Clasificación de las estructuras de almacenamiento:
1. Por tipo de datos almacenados
| Tipo | Descripción | Ejemplos |
|---|---|---|
| Mismo tipo | Almacenan solo datos del mismo tipo (todos enteros, todos textos, etc.) | array, lista, conjunto |
| Distinto tipo | Almacenan datos de distintos tipos (un número, una cadena, una fecha, etc.) | clases, objetos |
2. Por tamaño
| Tipo | Descripción | Ejemplos |
|---|---|---|
| Estáticas | El tamaño se define al principio y no puede cambiar | array, matriz |
| Dinámicas | El tamaño puede crecer o disminuir en tiempo de ejecución | ArrayList, LinkedList, HashSet, HashMap |
3. Por orden interno
| Tipo | Descripción | Ejemplos |
|---|---|---|
| No ordenadas | No tienen orden interno; tú decides cómo organizarlas | array, HashSet |
| Ordenadas | Se ordenan automáticamente al insertar datos (por nombre, por número, etc.) | algunas versiones de TreeSet, TreeMap |
Detalle de las principales estructuras:
🔸 Estáticas: Array
int[] numeros = new int[10]; // Crea un array de 10 enteros
- Ventajas:
- Acceso directo con un índice:
numeros[3] - Eficiente si ya conoces cuántos elementos vas a guardar
- Acceso directo con un índice:
- Desventajas:
- No puedes cambiar su tamaño una vez creado
- Si reservas más espacio del necesario, desperdicias memoria
🔸 Dinámicas (cambian de tamaño automáticamente)
| Estructura | ¿Qué hace? | Ejemplo |
|---|---|---|
| ArrayList | Lista dinámica como un array, pero flexible | ArrayList<String> lista = new ArrayList<>(); |
| LinkedList | Lista enlazada, buena para insertar/quitar al principio o al final | LinkedList<String> cola = new LinkedList<>(); |
| HashSet | Guarda elementos únicos, sin orden | HashSet<String> colores = new HashSet<>(); |
| HashMap | Guarda pares clave-valor (como un diccionario) | HashMap<String, String> coche = new HashMap<>(); |