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.