Sobes.tech
Junior

Kui turvaline on pääseda HashMap-i elemendile, kasutades mitteolevat võtit?

sobes.tech AI

Vastus AI-lt

Kui pöördute HashMap elemendi poole mitteoleva võtmisega, tagastab get() meetod null. See on turvaline selles mõttes, et see ei põhjusta IndexOutOfBoundsException erindit, nagu see juhtuks näiteks massiivi või nimekirja puhul vale indeksi kasutamisel.

Kuid kui edasine kood eeldab, et saadud tulemus ei ole null (näiteks selle objekti meetodite kutsumisel), võib see põhjustada NullPointerException.

Turvalise töö jaoks on soovitatav:

  • Kontrollida tulemust null-i suhtes enne selle kasutamist:

    // Näide null-kontrollist
    Object value = hashMap.get(nonExistentKey);
    if (value != null) {
        // Kasutada väärtust
    } else {
        // Käsitleda võtmata võtme olukorda
    }
    
  • Kasutada meetodeid, mis pakuvad vaikimisi väärtust või turvalisemat käitumist, näiteks getOrDefault() (saadaval alates Java 8):

    // Näide getOrDefault kasutamisest
    Object value = hashMap.getOrDefault(nonExistentKey, defaultValue);
    
  • Kasutada Optional-i konstruktsiooni (Java 8-st), kui see on asjakohane, et selgemalt märkida võimalik väärtuse puudumine:

    // Näide Optional kasutamisest
    Optional<Object> optionalValue = Optional.ofNullable(hashMap.get(nonExistentKey));
    if (optionalValue.isPresent()) {
        // Kasutada väärtust: optionalValue.get()
    }
    

Seega on otse get() meetodi kasutamine turvaline, kuid edasine töötlemine saadud null-väärtusega ilma vastava kontrollita võib põhjustada NullPointerException.