CodeGym /Blogue Java /Random-PT /Como usar o método keySet em java.util.Map
John Squirrels
Nível 41
San Francisco

Como usar o método keySet em java.util.Map

Publicado no grupo Random-PT
Se você precisar obter todas as chaves que seu Mapa contém, você pode usar o método java.util.HashMap.keySet() realmente útil. Neste artigo, vamos explicar como funciona. Como você sabe, a classe HashMap implementa a interface Map , então nos exemplos vamos usar o método HashMap keySet() .

Assinatura do método HashMap keySet() e princípio de operação

O método Set<K> keySet() retorna uma visualização Set das chaves que estão contidas neste mapa. A característica desta coleção Set, que mantém as chaves, é que não pode haver elementos duplicados nela. O conjunto é apoiado pelo mapa. Isso significa que se algo foi alterado no mapa, isso se reflete no conjunto e vice-versa. Por exemplo, você pode remover itens deste conjunto, e as chaves e seus valores correspondentes são automaticamente removidos do mapa, mas você não pode adicionar novos itens nele.

Exemplos de keySet() do HashMap

Vamos criar um HashMap com os nomes de nossos amigos e suas chaves digitais e, em seguida, imprimir o conjunto de chaves usando o 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);
A saída é:
chaves do mapa: [1, 2, 3, 4, 5]
Além do método java.util.HashMap.keySet() em Java existe um método entrySet() , ele também retorna um Set , mas este conjunto contém pares chave-valor. Aqui está um exemplo com os métodos java.util.HashMap.keySet() e 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());
       }
   }
}
Aqui está a saída:
chaves do mapa: [1, 2, 3, 4, 5] chaves e valores do mapa: 1 : John 2 : Ivy 3 : Ricky 4 : Andrew 5 : Alex
Agora vamos tentar remover um elemento do keySet e garantir que ele afete nosso 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);
   }
}
A saída é:
chaves do mapa: [1, 2, 3, 4, 5] myHashMap após remover um elemento de myKeySet: {1=John, 2=Ivy, 3=Ricky, 5=Alex} chaves do mapa: [1, 2 , 3, 5]
Como você pode ver, removemos uma chave “4” do Set , e isso resultou na remoção de um par “4-Alex” do nosso HashMap . Agora vamos tentar adicionar uma chave 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);

   }
}
Neste caso, obteremos uma exceção, porque nosso keySet está conectado ao nosso hashMap :
chaves do mapa: [1, 2, 3, 4, 5] Exceção no encadeamento "main" java.lang.UnsupportedOperationException em java.base/java.util.AbstractCollection.add(AbstractCollection.java:251) em KeySetDemo.main (KeySetDemo.java:20) Processo finalizado com código de saída 1
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION