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.