Kiek saugu pasiekti elementą HashMap naudojant neegzistuojantį raktą?
sobes.tech AI
Atsakymas iš AI
Prieigiant prie elementų HashMap naudojant neegzistuojantį raktą, get() metodas grąžina null. Tai yra saugu tuo požiūriu, kad neįvyks IndexOutOfBoundsException išimtis, kaip tai būtų, pavyzdžiui, su masyvu ar sąrašu, prieinant per netinkamą indeksą.
Tačiau, jei vėlesnis kodas daro prielaidą, kad gautas rezultatas nebus null (pavyzdžiui, kviečiant metodus šiam objektui), tai gali sukelti NullPointerException.
Siekiant saugaus darbo, rekomenduojama:
-
Patikrinti rezultatą dėl
nullprieš naudojant:// Pavyzdys, kaip patikrinti dėl null Object value = hashMap.get(nonExistentKey); if (value != null) { // Naudoti value } else { // Tvarkyti trūkstamą raktą } -
Naudoti metodus, kurie teikia numatytąją reikšmę arba saugesnį elgesį, pavyzdžiui,
getOrDefault()(pasiekiama nuo Java 8):// Pavyzdys, kaip naudoti getOrDefault Object value = hashMap.getOrDefault(nonExistentKey, defaultValue); -
Naudoti
Optionalkonstruktą (su Java 8), jei tai tinkama, kad aiškiau pažymėti galimą reikšmės nebuvimą:// Pavyzdys, kaip naudoti Optional Optional<Object> optionalValue = Optional.ofNullable(hashMap.get(nonExistentKey)); if (optionalValue.isPresent()) { // Naudoti reikšmę: optionalValue.get() }
Taip, tiesioginis prieiga get() metodu yra saugi, tačiau dirbant su null reikšme be tinkamos patikros gali kilti NullPointerException.