¿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<>(); |