Jeśli chcesz uzyskać wszystkie klucze, które zawiera Twoja mapa , możesz użyć bardzo przydatnej metody java.util.HashMap.keySet() . W tym artykule wyjaśnimy, jak to działa. Jak wiesz, klasa HashMap implementuje interfejs Map , więc w przykładach użyjemy metody HashMap keySet() .
Podpis metody HashMap keySet() i zasada działania
Metoda Set<K> keySet() zwraca widok zestawu kluczy zawartych w tej mapie. Cechą tej kolekcji Set, która przechowuje klucze, jest to, że nie mogą się w niej duplikować elementy. Do zestawu dołączona jest mapa. Oznacza to, że jeśli coś zostało zmienione na mapie, jest to odzwierciedlone w zestawie i odwrotnie. Na przykład możesz usunąć elementy z tego zestawu, a klucze i odpowiadające im wartości są automatycznie usuwane z mapy, ale nie możesz dodawać do niego nowych elementów.HashMap keySet() przykłady
Stwórzmy HashMap z imionami naszych znajomych i ich cyfrowymi kluczami, a następnie wydrukujmy Zestaw kluczy za pomocą metody 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);
Dane wyjściowe to:
klawisze mapy: [1, 2, 3, 4, 5]
Oprócz metody java.util.HashMap.keySet() w Javie istnieje metoda entrySet() , która zwraca również Set , ale ten zestaw zawiera pary klucz-wartość. Oto przykład z metodami java.util.HashMap.keySet() i 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());
}
}
}
Oto dane wyjściowe:
klawisze mapy: [1, 2, 3, 4, 5]
klawisze i wartości mapy:
1 : John
2 : Ivy
3 : Ricky
4 : Andrew
5 : Alex
Teraz spróbujmy usunąć element z zestawu kluczy i upewnić się, że wpływa on na naszą oryginalną HashMap .
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);
}
}
Dane wyjściowe to:
klucze mapy: [1, 2, 3, 4, 5]
myHashMap po usunięciu elementu z myKeySet: {1=John, 2=Ivy, 3=Ricky, 5=Alex}
klucze mapy: [1, 2 , 3, 5]
Jak widać, usunęliśmy klucz „4” z zestawu , co zaowocowało usunięciem pary „4-Alex” z naszej mapy HashMap . Teraz spróbujmy dodać klucz do 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);
}
}
W tym przypadku otrzymamy wyjątek, ponieważ nasz zestaw kluczy połączył się z naszą hashMap :
klucze mapy: [1, 2, 3, 4, 5]
Wyjątek w wątku „main” java.lang.UnsupportedOperationException
w java.base/java.util.AbstractCollection.add(AbstractCollection.java:251)
w KeySetDemo.main (KeySetDemo.java:20)
Proces zakończony kodem wyjścia 1
GO TO FULL VERSION