java collections - keyset () vs entrySet () en el mapa

Puse un conjunto de elementos de cadena es un mapa donde los elementos del conjunto de cadenas son clave y la frecuencia de la palabra es valor, por ejemplo

String[] args = {"if","it","is","to","be","it","is","up","me","to","delegate"};

then el mapa tendrá entradas como[ if:1, it:2 .... ]

Set<String> keys = m.keySet();
System.out.println("keyset of the map : "+keys);

imprime todas las claves:"if","it","is","to","be","it","is","up","me","to","delegate"

Set<Map.Entry<String, Integer>> entrySet = m.entrySet();
Iterator<Map.Entry<String, Integer>> i = entrySet.iterator();
while(i.hasNext()){
    Map.Entry<String, Integer> element = i.next();
    System.out.println("Key: "+element.getKey()+" ,value: "+element.getValue());
}

imprime todos los pares de valores clave:

Utilizando el conjunto de entradas imprime todos los valores:

Key: if ,value: 1
Key: it ,value: 2
Key: is ,value: 2
Key: to ,value: 2
Key: be ,value: 1
Key: up ,value: 1
Key: me ,value: 1
Key: delegate ,value: 1

Pero el bloque de código a continuación debe imprimir exactamente el mismo resultado que el anterior, pero no:

Iterator<String> itr2 = keys.iterator();
while(itr2.hasNext()){
    //System.out.println(itr1.next()+" ");
    //System.out.println(m.get(itr1.next())+" ");
    System.out.println("Key: "+itr2.next()+" ,value: "+m.get(itr2.next()));
}

Imprime:

Key: if ,value: 2
Key: is ,value: 2
Key: be ,value: 1
Key: me ,value: 1

Pero si descomentamos la línea 1 en el ciclo while, es decir,

System.out.println(itr1.next()+" ");

y comentar la línea

System.out.println("Key: "+itr2.next()+" ,value: "+m.get(itr2.next()));

Entonces obtenemos todas las claves:{"if","it","is","to","be","it","is","up","me","to","delegate"};

Si usamosm.get() conitr2.next(), ¡entonces el iterador no tiene pocas claves!

Respuestas a la pregunta(10)

Su respuesta a la pregunta