Kako provjeriti postoji li ključ na karti
1. Pregled
U ovom kratkom vodiču potražit ćemo načine kako provjeriti postoji li ključ u a Karta.
Konkretno, usredotočit ćemo se na sadržiKljuč i dobiti.
2. sadržiKljuč
Ako pogledamo JavaDoc za Karta # sadržiKljuč:
Vraća true ako ova karta sadrži mapiranje za navedeni ključ
Vidimo da je ova metoda prilično dobar kandidat za ono što želimo.
Stvorimo vrlo jednostavnu kartu i provjerimo njezin sadržaj sadržiKljuč:
@Test public void whenKeyIsPresent_thenContainsKeyReturnsTrue () {Map map = Collections.singletonMap ("key", "value"); assertTrue (map.containsKey ("ključ")); assertFalse (map.containsKey ("nedostaje")); }
Jednostavno rečeno, sadržiKljuč govori nam sadrži li karta taj ključ.
3. dobiti
Sada, dobiti ponekad može i raditi, ali dolazi s nekom prtljagom, ovisno o tome da li je Karta implementacija podržava null vrijednosti.
Opet, baciti pogled na Karta'S JavaDoc, ovaj put za Karta # stavi, vidimo da će baciti samo a NullPointerException:
ako je navedeni ključ ili vrijednost null i ova karta ne dopušta null ključeve ili vrijednosti
Budući da neke implementacije Karta može imati null vrijednosti (poput HashMap), moguće je za dobiti vratiti null iako je ključ prisutan.
Dakle, ako je naš cilj vidjeti ima li ključ vrijednost ili ne, onda dobiti će raditi:
@Test public void whenKeyHasNullValue_thenGetStillWorks () {Map map = Collections.singletonMap ("ništa", null); assertTrue (map.containsKey ("ništa")); assertNull (map.get ("ništa")); }
Ali, ako samo pokušavamo provjeriti postoji li ključ, onda bismo se trebali držati sadržiKljuč.
4. Zaključak
U ovom smo članku pogledali sadržiKljuč. Također smo pobliže pogledali zašto je rizično koristiti dobiti za provjeru postojanja ključa.
Kao i uvijek, pogledajte primjere koda na Githubu.