Iteración sobre Mapas en Java: Métodos y Técnicas

En Java, los Mapas almacenan elementos como pares clave-valor, donde cada par representa una relación de mapeo. La interfaz Map utiliza la clase interna Entry para representar cada uno de estos pares de mapeo. Cada objeto Entry contiene métodos para obtener la clave (getKey()) y el valor (getValue()).

// Iterando sobre un Map usando Entry
Iterator<Map.Entry<Integer, Integer>> iterador = mapa.entrySet().iterator();
while(iterador.hasNext()) {
    Map.Entry<Integer,Integer> elemento = iterador.next();
    int clave = elemento.getKey();
    int valor = elemento.getValue();
    System.out.println(clave + ": " + valor);
}

El método entrySet() devuelve una vista de conjunto de los pares clave-valor contenidos en el Map. Este conjunto implementa la interfaz Set, donde cada elemento es de tipo Map.Entry. Es una forma común de iterar sobre los elementos de un Map.

// Usando entrySet para iterar
Set<Map.Entry<String, String>> conjuntoEntradas = mapa.entrySet();

for (Map.Entry<String, String> entrada : conjuntoEntradas) {
    System.out.println("Clave: " + entrada.getKey() + ", Valor: " + entrada.getValue());
}

El método keySet()

El método keySet() devuelve una vista de conjunto de todas las claves contenidas en el Map. Este conjunto también ipmlementa la interfaz Set, pero los elementos son solo las claves del Map.

// Iterando usando keySet
Set<String> claves = mapa.keySet();

for (String clave : claves) {
    System.out.println("Clave: " + clave + ", Valor: " + mapa.get(clave));
}

Cuatro Formas de Iterar sobre un Map en Java

public static void main(String[] args) {
    // Crear un mapa de ejemplo
    Map<Integer, String> diccionario = new HashMap<>();
    diccionario.put(1, "elemento1");
    diccionario.put(2, "elemento2");
    diccionario.put(3, "elemento3");

    // Método 1: Iteración usando keySet
    System.out.println("Iteración con keySet:");
    for (Integer clave : diccionario.keySet()) {
        System.out.println("Clave: " + clave + ", Valor: " + diccionario.get(clave));
    }

    // Método 2: Iteración con entrySet y Iterator
    System.out.println("\nIteración con entrySet y Iterator:");
    Iterator<Map.Entry<Integer, String>> iterador = diccionario.entrySet().iterator();
    while (iterador.hasNext()) {
        Map.Entry<Integer, String> par = iterador.next();
        System.out.println("Clave: " + par.getKey() + ", Valor: " + par.getValue());
    }

    // Método 3: Iteración directa con entrySet (recomendado)
    System.out.println("\nIteración directa con entrySet:");
    for (Map.Entry<Integer, String> par : diccionario.entrySet()) {
        System.out.println("Clave: " + par.getKey() + ", Valor: " + par.getValue());
    }

    // Método 4: Iteración sobre valores
    System.out.println("\nIteración sobre valores únicamente:");
    for (String valor : diccionario.values()) {
        System.out.println("Valor: " + valor);
    }
}

Etiquetas: java mapas entrySet keySet Iteración

Publicado el 6-18 16:25