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
nullpř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.