Sobes.tech
Junior

Jak bezpečné je přistupovat k prvku v HashMap pomocí klíče, který neexistuje?

sobes.tech AI

Odpověď od AI

Při přístupu k prvku v HashMap pomocí neexistujícího klíče metoda get() vrací null. To je bezpečné v tom smyslu, že nedojde k výjimce typu IndexOutOfBoundsException, jako by tomu bylo například u pole nebo seznamu při přístupu podle nesprávného indexu.

Nicméně, pokud následující kód předpokládá, že získaný výsledek nebude null (například při volání metod na tomto objektu), může to vést k výjimce NullPointerException.

Pro bezpečnou práci se doporučuje:

  • Kontrolovat výsledek na null před použitím:

    // Příklad kontroly na null
    Object value = hashMap.get(nonExistentKey);
    if (value != null) {
        // Použít value
    } else {
        // Ošetřit případ chybějícího klíče
    }
    
  • Používat metody, které poskytují výchozí hodnotu nebo bezpečnější chování, například getOrDefault() (dostupné od Java 8):

    // Příklad použití getOrDefault
    Object value = hashMap.getOrDefault(nonExistentKey, defaultValue);
    
  • Používat konstrukci Optional (s Java 8), pokud je to vhodné, aby bylo jasněji označeno možné chybění hodnoty:

    // Příklad použití Optional
    Optional<Object> optionalValue = Optional.ofNullable(hashMap.get(nonExistentKey));
    if (optionalValue.isPresent()) {
        // Použít hodnotu: optionalValue.get()
    }
    

Tímto způsobem je přímý přístup metodou get() bezpečný, ale práce s null hodnotou bez odpovídající kontroly může způsobit NullPointerException.