So prüfen Sie, ob ein Schlüssel in einer Karte vorhanden ist
1. Überblick
In diesem kurzen Tutorial werden Möglichkeiten untersucht, um zu überprüfen, ob ein Schlüssel inMap vorhanden ist.
Insbesondere konzentrieren wir uns aufcontainsKey andget.
2. containsKey
Wenn wir unsthe JavaDoc for Map#containsKey ansehen:
Gibt
true
zurück, wenn diese Zuordnung eine Zuordnung für den angegebenen Schlüssel enthält
Wir können sehen, dass diese Methode ein ziemlich guter Kandidat für das ist, was wir wollen.
Erstellen wir eine sehr einfache Karte und überprüfen ihren Inhalt mitcontainsKey:
@Test
public void whenKeyIsPresent_thenContainsKeyReturnsTrue() {
Map map = Collections.singletonMap("key", "value");
assertTrue(map.containsKey("key"));
assertFalse(map.containsKey("missing"));
}
Einfach ausgedrückt,containsKey gibt an, ob die Karte diesen Schlüssel enthält.
3. get
Jetzt funktioniert derget -Scan manchmal auch, aber er wird mit etwas Gepäck geliefert, je nachdem, ob die Implementierung vonMapNullwerte unterstützt oder nicht.
Wenn wir uns noch einmalMap JavaDoc ansehen, diesmal fürMap#put, sehen wir, dass es nurNullPointerException wirft:
wenn der angegebene Schlüssel oder Wert nulland this map does not permit null keys or values ist
Da einige Implementierungen vonMap can Nullwerte haben (wieHashMap), könnengetnull zurückgeben, obwohl der Schlüssel vorhanden ist.
Wenn wir also sehen möchten, ob ein Schlüssel einen Wert hat oder nicht, funktioniertget:
@Test
public void whenKeyHasNullValue_thenGetStillWorks() {
Map map = Collections.singletonMap("nothing", null);
assertTrue(map.containsKey("nothing"));
assertNull(map.get("nothing"));
}
Wenn wir jedoch nur versuchen zu überprüfen, ob der Schlüssel vorhanden ist, sollten wir uns ancontainsKey halten.
4. Fazit
In diesem Artikel haben wir unscontainsKey angesehen. Wir haben uns auch genauer angesehen, warum es riskant ist,get zur Überprüfung der Existenz eines Schlüssels zu verwenden.
Schauen Sie sich wie immer die Codebeispieleover on Github an.