Easier to read with cream paper, a tint, more contrast or larger text? Choose your colours and text, once, for every page.

Vista previa

Mapas y conjuntos

Esta es la primera página de la lección. Léela y prueba las actividades. El resto está en el curso completo.

40 minutos

En la agenda buscas por nombre

En la agenda del móvil escribes "Marta" y sale su teléfono. No cuentas cuántos contactos hay antes que ella.

Una lista busca por posición. Pero muchas veces quieres buscar por un nombre.

Para eso Java tiene los mapas. Y para guardar cosas sin repetirlas, los conjuntos.

Palabras clave

PalabraQué significaEjemplo
HashMapUn mapa: guarda parejas de clave y valor. Buscas por la clave.HashMap<String, Integer>
ClaveLo que usas para buscar. En un mapa no se repite."café"
ValorLo que guardas junto a la clave.1
HashSetUn conjunto: guarda valores sin repetir ninguno.HashSet<String>
nullQuiere decir "no hay nada". Un mapa lo da si la clave no existe.prices.get("tortilla")

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Parejas de clave y valor

Piensa en la carta del bar del instituto. Cada producto tiene su precio: bocadillo 3 euros, café 1 euro.

En un HashMap<String, Integer> la clave es el producto y el valor es el precio. Entre los signos < y > van dos tipos: el de la clave y el del valor.

Con put guardas una pareja. Con get pides el valor de una clave.

Pruébalo: la carta del bar

Código: java
import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        HashMap<String, Integer> prices = new HashMap<String, Integer>();
        prices.put("bocadillo", 3);
        prices.put("café", 1);
        prices.put("zumo", 2);

        System.out.println("Un café cuesta " + prices.get("café") + " euro.");
        System.out.println("Productos: " + prices.size());

        // La misma clave otra vez: cambia el valor, no añade otra pareja.
        prices.put("café", 2);
        System.out.println("Ahora el café cuesta " + prices.get("café"));
        System.out.println("Productos: " + prices.size());

        System.out.println(prices.containsKey("tortilla"));
        System.out.println(prices.get("tortilla"));
    }
}

Ejemplo resuelto: el mapa paso a paso

OrdenParejas del mapasize()
Se crea vacíoninguna0
put("bocadillo", 3), put("café", 1), put("zumo", 2)bocadillo=3, café=1, zumo=23
put("café", 2)bocadillo=3, café=2, zumo=23
remove("zumo")bocadillo=3, café=22

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Una clave que no existe da null

Advertencia

Si pides con get una clave que no está, el resultado es null. Guardarlo en un int rompe el programa con una excepción. Antes pregunta con containsKey, o usa getOrDefault con un valor de repuesto.

Contar con un mapa

Un uso muy común: contar cuántas veces sale cada cosa. La clave es la cosa y el valor es la cuenta.

Con getOrDefault(clave, 0) pides la cuenta y, si la clave no está, te devuelve 0.

Para recorrer todas las claves, keySet() te las da. Úsalo con el for de cada valor.

Pruébalo: contar los votos

Código: java
import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        String[] votes = {"si", "no", "si", "si", "no"};
        HashMap<String, Integer> counts = new HashMap<String, Integer>();

        for (int i = 0; i < votes.length; i++) {
            // Si el voto no estaba, parte de 0.
            counts.put(votes[i], counts.getOrDefault(votes[i], 0) + 1);
        }

        System.out.println("Síes: " + counts.get("si"));
        System.out.println("Noes: " + counts.get("no"));

        int total = 0;
        for (String option : counts.keySet()) {
            total = total + counts.get(option);
        }
        System.out.println("Votos en total: " + total);
    }
}

Ejemplo resuelto: las cuentas voto a voto

VotoCuentas después
sisi=1
nosi=1, no=1
sisi=2, no=1
sisi=3, no=1
nosi=3, no=2

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Repaso rápido

Inténtalo

Repaso rápido

3 preguntas
Pruébalo: tus respuestas se corrigen aquí y después se olvidan. Inicia sesión si quieres que se guarde tu puntuación y continuar donde lo dejaste.Iniciar sesión para guardar tu puntuación

Tus respuestas se corrigen aquí y no se guardan. Una cuenta guarda tus resultados.

La lección continúa

9 partes más de esta lección están en el curso completo, con los ejercicios y la comprobación final. Una cuenta te da todo.