Sobes.tech
Junior

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 null pre 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.