Sobes.tech
Junior

Ako je bezpečné pristupiti prvku v HashMap pomocou kľúča, ktorý neexistuje?

sobes.tech AI

Odpoveď od AI

Prístupom k prvku v HashMap pomocou neexistujúceho kľúča, metóda get() vráti null. To je bezpečné v tom zmysle, že nedôjde k výnimke typu IndexOutOfBoundsException, ako by to bolo napríklad pri prístupe k poľu alebo zoznamu na nesprávnom indexe.

Avšak, ak nasledujúci kód predpokladá, že získaný výsledok nebude null (napríklad pri volaní metód na tomto objekte), môže to viesť k NullPointerException.

Pre bezpečnú prácu sa odporúča:

  • Skontrolovať výsledok na null pred jeho použitím:

    // Príklad kontroly na null
    Object value = hashMap.get(nonExistentKey);
    if (value != null) {
        // Použiť value
    } else {
        // Ošetriť prípad chýbajúceho kľúča
    }
    
  • Používať metódy, ktoré poskytujú predvolenú hodnotu alebo bezpečnejšie správanie, napríklad getOrDefault() (dostupné od Java 8):

    // Príklad použitia getOrDefault
    Object value = hashMap.getOrDefault(nonExistentKey, defaultValue);
    
  • Používať konštrukciu Optional (s Java 8), ak je to vhodné, aby sa jasnejšie označilo možné chýbanie hodnoty:

    // Príklad použitia Optional
    Optional<Object> optionalValue = Optional.ofNullable(hashMap.get(nonExistentKey));
    if (optionalValue.isPresent()) {
        // Použiť hodnotu: optionalValue.get()
    }
    

Takto je priame volanie metódy get() bezpečné, ale práca s null hodnotou bez vhodnej kontroly môže spôsobiť NullPointerException.