Ako skontrolovať, či na mape existuje kľúč

1. Prehľad

V tomto krátkom tutoriáli sa pozrieme na spôsoby, ako skontrolovať, či v kľúči existuje kľúč Mapa.

Konkrétne sa zameriame na containsKey a dostať.

2. containsKey

Ak sa pozrieme na JavaDoc pre Mapa obsahuje kľúč:

Vráti hodnotu true, ak táto mapa obsahuje mapovanie pre zadaný kľúč

Vidíme, že táto metóda je celkom dobrým kandidátom na to, aby sme robili, čo chceme.

Vytvorme veľmi jednoduchú mapu a overíme jej obsah pomocou containsKey:

@Test public void whenKeyIsPresent_thenContainsKeyReturnsTrue () {Map map = Collections.singletonMap ("kľúč", "hodnota"); assertTrue (map.containsKey ("kľúč")); assertFalse (map.containsKey ("chýba")); }

Jednoducho povedané, containsKey nám hovorí, či mapa obsahuje tento kľúč.

3. dostať

Teraz, dostať niekedy môže fungovať tiež, ale dodáva sa s určitou batožinou, v závislosti od toho, či Mapa implementácia podporuje nulové hodnoty.

Opäť pri pohľade na MapaJavaDoc, tentokrát pre Mapa # vložená, vidíme, že bude hádzať iba a NullPointerException:

ak je zadaný kľúč alebo hodnota null a táto mapa nepovoľuje nulové kľúče ani hodnoty

Pretože niektoré implementácie Mapa môže mať nulové hodnoty (ako HashMap), je možné pre dostať vrátiť sa nulový aj keď je kľúč prítomný.

Takže ak je našim cieľom zistiť, či má kľúč hodnotu, alebo nie dostať bude pracovať:

@Test public void whenKeyHasNullValue_thenGetStillWorks () {Map map = Collections.singletonMap ("nothing", null); assertTrue (map.containsKey ("nič")); assertNull (map.get ("nič")); }

Ak sa však iba pokúšame skontrolovať, či kľúč existuje, mali by sme sa držať containsKey.

4. Záver

V tomto článku sme sa pozreli na containsKey. Pozreli sme sa tiež bližšie na to, prečo je jeho použitie riskantné dostať na overenie existencie kľúča.

Ako vždy, pozrite si príklady kódov na stránkach Github.