Hoe veilig is het om toegang te krijgen tot een element in HashMap via een niet-bestaande sleutel?
sobes.tech AI
Antwoord van AI
Bij het benaderen van een element in HashMap met een niet-bestaande sleutel, geeft de get()-methode null terug. Dit is veilig in die zin dat er geen IndexOutOfBoundsException-fout optreedt, zoals bijvoorbeeld bij toegang tot een array of lijst met een onjuiste index.
Echter, als de daaropvolgende code ervan uitgaat dat het verkregen resultaat niet null zal zijn (bijvoorbeeld bij het aanroepen van methoden op dat object), kan dit leiden tot een NullPointerException.
Voor veilig gebruik wordt aanbevolen:
-
Het resultaat op
nullte controleren voordat je het gebruikt:// Voorbeeld null-controle Object value = hashMap.get(nonExistentKey); if (value != null) { // Gebruik value } else { // Afhandelen van ontbrekende sleutel } -
Methoden te gebruiken die een standaardwaarde of veiliger gedrag bieden, zoals
getOrDefault()(beschikbaar vanaf Java 8):// Voorbeeld gebruik van getOrDefault Object value = hashMap.getOrDefault(nonExistentKey, defaultValue); -
De
Optional-constructie te gebruiken (met Java 8), indien passend, om het mogelijke ontbreken van een waarde explicieter aan te geven:// Voorbeeld gebruik van Optional Optional<Object> optionalValue = Optional.ofNullable(hashMap.get(nonExistentKey)); if (optionalValue.isPresent()) { // Gebruik de waarde: optionalValue.get() }
Op deze manier is directe toegang via get() veilig, maar werken met een null-waarde zonder de juiste controle kan een NullPointerException veroorzaken.