Hoe u kunt controleren of een sleutel op een kaart voorkomt

1. Overzicht

In deze korte tutorial bekijken we manieren om te controleren of er een sleutel bestaat in een Kaart.

In het bijzonder zullen we ons concentreren op bevatKey en krijgen.

2. bevatKey

Als we de JavaDoc voor Map # bevat sleutel:

Geeft true terug als deze kaart een toewijzing voor de opgegeven sleutel bevat

We kunnen zien dat deze methode een redelijk goede kandidaat is om te doen wat we willen.

Laten we een heel eenvoudige kaart maken en de inhoud ervan verifiëren met bevatKey:

@Test openbare leegte whenKeyIsPresent_thenContainsKeyReturnsTrue () {Map map = Collections.singletonMap ("sleutel", "waarde"); assertTrue (map.containsKey ("key")); assertFalse (map.containsKey ("missing")); }

Simpel gezegd, bevatKey vertelt ons of de kaart die sleutel bevat.

3. krijgen

Nu, krijgen kan soms ook werken, maar er zit wat bagage bij, afhankelijk van of de Kaart implementatie ondersteunt null-waarden.

Nogmaals, kijk naar Kaart‘S JavaDoc, deze keer voor Kaart # put, we zien dat het alleen een NullPointerException:

als de opgegeven sleutel of waarde null is en deze map staat geen null-sleutels of waarden toe

Sinds sommige implementaties van Kaart kan null-waarden hebben (zoals Hash kaart), het is mogelijk voor krijgen terugbrengen nul ook al is de sleutel aanwezig.

Dus als het ons doel is om te zien of een sleutel al dan niet een waarde heeft, dan krijgen zal werken:

@Test openbare leegte whenKeyHasNullValue_thenGetStillWorks () {Map map = Collections.singletonMap ("niets", null); assertTrue (map.containsKey ("niets")); assertNull (map.get ("niets")); }

Maar als we alleen maar proberen te controleren of de sleutel bestaat, dan moeten we vasthouden bevatKey.

4. Conclusie

In dit artikel hebben we gekeken naar bevatKey. We hebben ook nader bekeken waarom het gebruik ervan riskant is krijgen voor het verifiëren van het bestaan ​​van een sleutel.

Bekijk zoals altijd de codevoorbeelden op Github.