Ejercicios Iniciales: Conjuntos (Set) y Mapas (Map)
Resultados de Aprendizaje
Este boletín trabaja el siguiente RA del módulo de Programación:
- RA6 — Reconoce y utiliza las estructuras
HashSetyHashMapdel Java Collection Framework, comprendiendo sus características de unicidad y acceso directo por clave.
Objetivo
Familiarizarse con la sintaxis y el comportamiento básico de las estructuras HashSet y HashMap en Java.
Parte 1: Conjuntos (Set)
Recuerda
Un Set es como una bolsa de elementos únicos. No tiene orden garantizado y no admite duplicados.
Ejercicio 1.1: El Censo del Zoológico
Enunciado: Estás creando el inventario de especies para el nuevo Zoológico de la ciudad.
- Crea un
HashSet<String>llamadoespecies. - Añade los siguientes animales: "León", "Tigre", "Cebra", "León", "Elefante", "Tigre".
- Imprime el tamaño del conjunto (
size()). ¿Cuántas especies únicas hay realmente? - Imprime todas las especies usando un bucle
for-each. Observa si salen duplicados.
Salida esperada:
Ejercicio 1.2: ¿Tenemos este animal?
Enunciado: Partiendo del ejercicio anterior:
- Pregunta al usuario (con
Scanner) el nombre de un animal para buscar. - Usa el método
contains()para decirle si esa especie ya está en el zoológico. - Si la especie está, elimínala del conjunto (
remove()) porque ha sido trasladada a otro parque, y muestra un mensaje de confirmación.
Ejercicio 1.3: Limpiando la Base de Datos
Enunciado: El sistema antiguo del zoo ha generado una lista de identificadores de animales con errores (duplicados).
- Crea un
ArrayList<Integer>y añádele estos IDs:101, 102, 103, 101, 104, 102, 105. - Muestra la lista original con los duplicados.
- Crea un
HashSet<Integer>y pásale la lista completa en su constructor (new HashSet<>(lista)). - Muestra el conjunto resultante. ¡Los IDs duplicados han desaparecido automáticamente!
Parte 2: Mapas (Map) - El Diccionario Clave-Valor
Recuerda
Un Map asocia una Clave única con un Valor. Es ideal para diccionarios, agendas o inventarios.
Ejercicio 2.1: El Diccionario Español-Inglés
Enunciado: Crea un pequeño traductor.
- Crea un
HashMap<String, String>. La clave será la palabra en español y el valor en inglés. - Añade ("gato", "cat"), ("perro", "dog"), ("mesa", "table").
- Imprime el tamaño del mapa.
- Pide al usuario una palabra en español y muestra su traducción recuperándola con
get().
Salida esperada:
Ejercicio 2.2: Actualizando la Agenda
Enunciado: Vamos a gestionar una agenda telefónica simple (Nombre -> Teléfono).
- Crea un
HashMap<String, Integer>. - Inserta: ("Juan", 666111222), ("Marta", 666333444).
- Juan ha cambiado de número. Vuelve a insertar la clave "Juan" con el nuevo número 666999888.
- Imprime el mapa completo. ¿Aparece Juan dos veces o se ha actualizado?
- Intenta obtener el teléfono de "Pedro" (que no existe). ¿Qué devuelve el método
get()?
Ejercicio 2.3: Inventario de Frutas (Recorrido)
Enunciado: Gestiona el stock de una frutería.
- Crea un
HashMap<String, Double>(Fruta -> Precio/kg). - Añade: "Manzana" (1.5), "Pera" (1.8), "Plátano" (2.1).
- Recorre el mapa usando
entrySet()y un buclefor-each. - Muestra por pantalla cada fruta y su precio con el formato:
Producto: Manzana - Precio: 1.5 €.
Ejercicio 2.4: Frecuencia de Números
Enunciado:
Este es un caso de uso clásico de los mapas. Dado un array de números: {1, 5, 1, 2, 5, 5, 3}.
- Crea un
HashMap<Integer, Integer>donde la Clave es el número y el Valor es su "contador". - Recorre el array.
- Para cada número, si NO está en el mapa, añádelo con valor 1.
- Si YA está, recupera su valor actual, súmale 1 y guárdalo de nuevo.
- Al final, imprime qué números aparecieron y cuántas veces (ej: "El 5 aparece 3 veces").