Sådan kontrolleres, om der findes en nøgle på et kort

1. Oversigt

I denne korte vejledning ser vi på måder at kontrollere, om der findes en nøgle i en Kort.

Specifikt vil vi fokusere på indeholderKey og få.

2. indeholderKey

Hvis vi kigger på JavaDoc for Kort # indeholder nøgle:

Returnerer sandt, hvis dette kort indeholder en kortlægning for den angivne nøgle

Vi kan se, at denne metode er en ret god kandidat til at gøre, hvad vi vil.

Lad os oprette et meget simpelt kort og kontrollere dets indhold med indeholderKey:

@Test offentlig ugyldig nårKeyIsPresent_thenContainsKeyReturnsTrue () {Map map = Collections.singletonMap ("key", "value"); assertTrue (map.containsKey ("nøgle")); assertFalse (map.containsKey ("mangler")); }

Kort fortalt, indeholderKey fortæller os, om kortet indeholder den nøgle.

3.

Nu, kan også nogle gange fungere, men det kommer med noget bagage, afhængigt af om Kort implementering understøtter nulværdier.

Igen ser vi på Kort'S JavaDoc, denne gang til Kort # sæt, vi ser, at det kun vil kaste en NullPointerException:

hvis den angivne nøgle eller værdi er nul og dette kort tillader ikke nul-nøgler eller værdier

Siden nogle implementeringer af Kort kan have nulværdier (som f.eks HashMap), det er muligt for at vende tilbage nul selvom nøglen er til stede.

Så hvis vores mål er at se, om en nøgle har en værdi eller ej, så vil arbejde:

@Test offentlig ugyldig nårKeyHasNullValue_thenGetStillWorks () {Map map = Collections.singletonMap ("ingenting", null); assertTrue (map.containsKey ("ingenting")); assertNull (map.get ("ingenting")); }

Men hvis vi bare prøver at kontrollere, om nøglen findes, så skal vi holde fast ved indeholderKey.

4. Konklusion

I denne artikel kiggede vi på indeholderKey. Vi kiggede også nærmere på, hvorfor det er risikabelt at bruge for at verificere en nøgles eksistens.

Som altid, tjek kodeeksemplerne på Github.


$config[zx-auto] not found$config[zx-overlay] not found