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.