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.