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
GO TO FULL VERSION