Koliko je sigurno pristupiti elementu u HashMap putem ključa koji ne postoji?
sobes.tech АИ
Одговор од АИ
Pristupajući elementu u HashMap pomoću nepostojećeg ključa, metoda get() vraća null. To je sigurno u smislu da neće doći do izuzetka tipa IndexOutOfBoundsException, kao što bi bilo, na primer, sa nizom ili listom pri pristupu po pogrešnom indeksu.
Međutim, ako naredni kod pretpostavlja da rezultat neće biti null (na primer, prilikom poziva metoda na tom objektu), to može dovesti do NullPointerException.
Za siguran rad preporučuje se:
-
Proveriti rezultat na
nullpre korišćenja:// Primer provere na null Object value = hashMap.get(nonExistentKey); if (value != null) { // Koristiti value } else { // Obraditi slučaj nedostatka ključa } -
Koristiti metode koje pružaju podrazumevanu vrednost ili sigurnije ponašanje, na primer
getOrDefault()(dostupan od Java 8):// Primer korišćenja getOrDefault Object value = hashMap.getOrDefault(nonExistentKey, defaultValue); -
Koristiti konstrukciju
Optional(sa Java 8), ako je to prikladno, da se jasnije označi mogući nedostatak vrednosti:// Primer korišćenja Optional Optional<Object> optionalValue = Optional.ofNullable(hashMap.get(nonExistentKey)); if (optionalValue.isPresent()) { // Koristiti vrednost: optionalValue.get() }
Na ovaj način, direktan pristup metodom get() je siguran, ali rad sa null vrednošću bez odgovarajuće provere može izazvati NullPointerException.