CodeGym /Blog Java /Random-ES /Cómo usar el método keySet en java.util.Map
Autor
Vasyl Malik
Senior Java Developer at CodeGym

Cómo usar el método keySet en java.util.Map

Publicado en el grupo Random-ES
Si necesita obtener todas las claves que contiene su mapa , puede usar el método java.util.HashMap.keySet() realmente útil. En este artículo, explicaremos cómo funciona. Como sabe, la clase HashMap implementa la interfaz Map , por lo que en los ejemplos vamos a utilizar el método HashMap keySet() .

Firma del método HashMap keySet() y principio operativo

El método Set<K> keySet() devuelve una vista Set de las claves contenidas en este mapa. La característica de esta colección de Set, que guarda las claves, es que no puede haber elementos duplicados en ella. El conjunto está respaldado por el mapa. Eso significa que si se cambió algo en el mapa, se refleja en el conjunto, y viceversa. Por ejemplo, puede eliminar elementos de este conjunto, y las claves y sus valores correspondientes se eliminan automáticamente del mapa, pero no puede agregar nuevos elementos en él.

Ejemplos de HashMap keySet()

Vamos a crear un HashMap con los nombres de nuestros amigos y sus claves digitales y luego imprimamos el conjunto de claves utilizando el método HashMap keySet() .

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class KeySetDemo {
   public static void main(String[] args) {
       Map<Integer, String> myHashMap = new HashMap<>();
       myHashMap.put(1, "John");
       myHashMap.put(2, "Ivy");
       myHashMap.put(3, "Ricky");
       myHashMap.put(4, "Andrew");
       myHashMap.put(5, "Alex");

       //using map.keyset() method and print out the result
       Set<Integer> myKeySet = myHashMap.keySet();
       System.out.println("myKeySet of the map: "+myKeySet);
La salida es:
teclas del mapa: [1, 2, 3, 4, 5]
Además del método java.util.HashMap.keySet() en Java, hay un método entrySet() , también devuelve un Set , pero este conjunto contiene pares clave-valor. Aquí hay un ejemplo con los métodos java.util.HashMap.keySet() y java.util.HashMap.entrySet() :

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class KeySetDemo {
   public static void main(String[] args) {
       Map<Integer, String> myHashMap = new HashMap<>();
       myHashMap.put(1, "John");
       myHashMap.put(2, "Ivy");
       myHashMap.put(3, "Ricky");
       myHashMap.put(4, "Andrew");
       myHashMap.put(5, "Alex");

       //using map.keyset() method and print out the result
       Set<Integer> myKeySet = myHashMap.keySet();
       System.out.println("keys of the map: " + myKeySet);
       System.out.println("keys and values of the map: " );
       for( Map.Entry e : myHashMap.entrySet()){
           System.out.println(e.getKey() + " : " + e.getValue());
       }
   }
}
Aquí está la salida:
claves del mapa: [1, 2, 3, 4, 5] claves y valores del mapa: 1 : John 2 : Ivy 3 : Ricky 4 : Andrew 5 : Alex
Ahora intentemos eliminar un elemento del keySet y asegurarnos de que afecte nuestro HashMap original .

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class KeySetDemo {
   public static void main(String[] args) {
       Map<Integer, String> myHashMap = new HashMap<>();
       myHashMap.put(1, "John");
       myHashMap.put(2, "Ivy");
       myHashMap.put(3, "Ricky");
       myHashMap.put(4, "Andrew");
       myHashMap.put(5, "Alex");

       //using map.keyset() method and print out the result
       Set<Integer> myKeySet = myHashMap.keySet();
       System.out.println("keys of the map: " + myKeySet);
      myKeySet.remove(4);
       System.out.println("myHashMap after removing an element from myKeySet: " + myHashMap);
       System.out.println("keys of the map: " + myKeySet);
   }
}
La salida es:
claves del mapa: [1, 2, 3, 4, 5] myHashMap después de eliminar un elemento de myKeySet: {1=John, 2=Ivy, 3=Ricky, 5=Alex} claves del mapa: [1, 2 , 3, 5]
Como puede ver, eliminamos una clave "4" del Conjunto y resultó en la eliminación de un par "4-Alex" de nuestro HashMap . Ahora intentemos agregar una clave a keySet() :

import java.util.HashMap;
       import java.util.Map;
       import java.util.Set;

public class KeySetDemo {
   public static void main(String[] args) {
       Map<Integer, String> myHashMap = new HashMap<>();
       myHashMap.put(1, "John");
       myHashMap.put(2, "Ivy");
       myHashMap.put(3, "Ricky");
       myHashMap.put(4, "Andrew");
       myHashMap.put(5, "Alex");

       //using map.keyset() method and print out the result
       Set<Integer> myKeySet = myHashMap.keySet();
       System.out.println("keys of the map: " + myKeySet);
       myKeySet.add(7);

   }
}
En este caso, obtendremos una excepción, porque nuestro keySet se conectó a nuestro hashMap :
teclas del mapa: [1, 2, 3, 4, 5] Excepción en hilo "principal" java.lang.UnsupportedOperationException en java.base/java.util.AbstractCollection.add(AbstractCollection.java:251) en KeySetDemo.main (KeySetDemo.java:20) Proceso finalizado con el código de salida 1
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION