Wie sicher ist es, auf ein Element in HashMap über einen Schlüssel zuzugreifen, der nicht existiert?
sobes.tech KI
Antwort von AI
Beim Zugriff auf ein Element in HashMap mit einem nicht vorhandenen Schlüssel gibt die Methode get() null zurück. Das ist sicher im Sinne, dass keine IndexOutOfBoundsException-Ausnahme ausgelöst wird, wie es beispielsweise bei einem Array oder einer Liste beim Zugriff auf einen falschen Index der Fall wäre.
Wenn jedoch der nachfolgende Code annimmt, dass das Ergebnis nicht null sein wird (z.B. beim Aufrufen von Methoden an diesem Objekt), kann dies zu einer NullPointerException führen.
Für einen sicheren Umgang wird empfohlen:
-
Das Ergebnis auf
nullzu prüfen, bevor es verwendet wird:// Beispiel für null-Check Object value = hashMap.get(nonExistentKey); if (value != null) { // value verwenden } else { // Fall des fehlenden Schlüssels behandeln } -
Methoden zu verwenden, die einen Standardwert oder ein sichereres Verhalten bieten, z.B.
getOrDefault()(verfügbar ab Java 8):// Beispiel für getOrDefault Object value = hashMap.getOrDefault(nonExistentKey, defaultValue); -
Die Verwendung von
Optional(ab Java 8), falls angebracht, um das mögliche Fehlen eines Wertes expliziter zu kennzeichnen:// Beispiel für Optional Optional<Object> optionalValue = Optional.ofNullable(hashMap.get(nonExistentKey)); if (optionalValue.isPresent()) { // Wert verwenden: optionalValue.get() }
Auf diese Weise ist der direkte Zugriff mit get() sicher, aber die Arbeit mit einem null-Wert ohne entsprechende Prüfung kann eine NullPointerException verursachen.