Hvis du har brug for at få alle de nøgler, som dit kort indeholder, kan du bruge den virkelig praktiske java.util.HashMap.keySet() metode. I denne artikel vil vi forklare, hvordan det fungerer. Som du ved, implementerer HashMap- klassen Map- grænsefladen, så i eksemplerne skal vi bruge HashMap keySet()- metoden.
HashMap keySet() metodesignatur og driftsprincip
Set<K> keySet() -metoden returnerer en Set- visning af de nøgler, der er indeholdt i dette kort. Funktionen ved denne sæt-samling, der beholder nøglerne, er, at der ikke kan være duplikerede elementer i den. Sættet understøttes af kortet. Det betyder, at hvis noget blev ændret på kortet, afspejles det i sættet og omvendt. For eksempel kan du fjerne elementer fra dette sæt, og nøglerne og deres tilsvarende værdier fjernes automatisk fra kortet, men du kan ikke tilføje nye elementer i det.HashMap keySet() eksempler
Lad os oprette et HashMap med navne på vores venner og deres digitale nøgler og derefter udskrive sættet af nøgler ved hjælp af HashMap keySet() metoden.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);
Udgangen er:
nøgler på kortet: [1, 2, 3, 4, 5]
Udover java.util.HashMap.keySet() -metoden i Java er der en entrySet()- metode, den returnerer også et Set , men dette sæt indeholder nøgle-værdi-par. Her er et eksempel med både java.util.HashMap.keySet() og java.util.HashMap.entrySet() metoder:
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());
}
}
}
Her er outputtet:
nøgler på kortet: [1, 2, 3, 4, 5] nøgler og værdier på kortet: 1 : John 2 : Ivy 3 : Ricky 4 : Andrew 5 : Alex
Lad os nu prøve at fjerne et element fra keySet og sikre os, at det påvirker vores originale 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);
}
}
Udgangen er:
taster på kortet: [1, 2, 3, 4, 5] myHashMap efter at have fjernet et element fra myKeySet: {1=John, 2=Ivy, 3=Ricky, 5=Alex} taster på kortet: [1, 2 , 3, 5]
Som du kan se, fjernede vi en nøgle "4" fra sættet , og det resulterede i at fjerne et par "4-Alex" fra vores HashMap . Lad os nu prøve at tilføje en nøgle til 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);
}
}
I dette tilfælde får vi en undtagelse, fordi vores nøglesæt er forbundet til vores hashMap :
nøgler på kortet: [1, 2, 3, 4, 5] Undtagelse i tråden "main" java.lang.UnsupportedOperationException på java.base/java.util.AbstractCollection.add(AbstractCollection.java:251) på KeySetDemo.main (KeySetDemo.java:20) Processen afsluttet med afslutningskode 1