Hogyan ellenőrizhető, hogy létezik-e kulcs a térképen?

1. Áttekintés

Ebben a rövid bemutatóban megvizsgáljuk, hogy létezik-e kulcs a Térkép.

Konkrétan arra fogunk koncentrálni tartalmazzaKey és kap.

2. tartalmazzaKey

Ha megnézzük a JavaDoc for A # map tartalmazza a kulcsot:

Igaz értéket ad vissza, ha ez a térkép a megadott kulcs leképezését tartalmazza

Láthatjuk, hogy ez a módszer nagyon jó jelölt arra, hogy azt tegyünk, amit akarunk.

Hozzunk létre egy nagyon egyszerű térképet, és ellenőrizzük annak tartalmát tartalmazzaKey:

@Test public void whenKeyIsPresent_thenContainsKeyReturnsTrue () {Map map = Collections.singletonMap ("kulcs", "érték"); assertTrue (map.containsKey ("kulcs")); assertFalse (map.containsKey ("hiányzik")); }

Egyszerűen fogalmazva, tartalmazzaKey megmondja, hogy a térkép tartalmazza-e ezt a kulcsot.

3. kap

Most, kap néha működhet is, de jár némi poggyász, attól függően, hogy a Térkép a megvalósítás null értékeket támogat.

Ismét szemügyre véve TérképJavaDoc, ezúttal a Térkép # put, látjuk, hogy csak a-t dobja NullPointerException:

ha a megadott kulcs vagy érték null és ez a térkép nem engedélyez semmilyen kulcsot vagy értéket

Mivel néhány megvalósítása Térkép értéke null lehet (mint HashMap), ez lehetséges kap visszatérni nulla annak ellenére, hogy a kulcs megvan.

Tehát, ha a célunk az, hogy megnézzük, van-e egy kulcsnak értéke, vagy sem, akkor kap működni fog:

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

De, ha csak a kulcs létezését próbáljuk ellenőrizni, akkor ragaszkodnunk kell ehhez tartalmazzaKey.

4. Következtetés

Ebben a cikkben megnéztük tartalmazzaKey. Közelebbről megvizsgáltuk azt is, hogy miért kockázatos használni kap kulcs létezésének igazolására.

Mint mindig, nézze meg a kód példákat a Githubon.