Sobes.tech
Junior

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 null zu 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.