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
nullpred 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.