A Map.computeIfAbsent () metódus

1. Áttekintés

Ebben az oktatóanyagban röviden áttekintjük az új alapértelmezett módszert computeIfAbsent a Térkép a Java 8-ban bevezetett felület.

Konkrétan megvizsgáljuk az aláírását, használatát és a különböző esetek kezelését.

2. Map.computeIfAbsent Módszer

Kezdjük azzal, hogy megnézzük a computeIfAbsent:

alapértelmezett V computeIfAbsent (K kulcs, Function mappingFunction)

A computeIfAbsent A módszer két paramétert vesz fel. Az első paraméter a kulcs a második paraméter pedig a mappingFunction. Fontos tudni, hogy a leképezési függvény csak akkor hívható meg, ha a leképezés nincs jelen.

2.1. Nem null értékkel kapcsolatos kulcs

Először azt ellenőrzi, hogy a kulcs jelen van a térképen. Ha a kulcs jelen van, és egy nem null érték kapcsolódik a kulcshoz, akkor azt adja vissza:

Map stringLength = new HashMap (); stringLength.put ("John", 5); assertEquals ((hosszú) stringLength.computeIfAbsent ("John", s -> s.length ()), 5);

Mint látjuk, a kulcs „John” nem null leképezés van jelen, akkor az 5. értéket adja vissza. Ha a leképezési függvényünket használnánk, akkor azt várnánk, hogy a függvény visszaadja a 4 hosszát.

2.2. Az érték kiszámításához használja a leképezési funkciót

Továbbá, ha a kulcs nem található a térképen, vagy a nullérték összefügg a kulcs, akkor megkísérli kiszámolni az értéket a megadott felhasználásával mappingFunction. Ezenkívül beírja a számított értéket a térképbe, hacsak a számított érték nem null.

Vessünk egy pillantást a mappingFunction ban,-ben computeIfAbsent módszer:

Map stringLength = new HashMap (); assertEquals ((hosszú) stringLength.computeIfAbsent ("John", s -> s.length ()), 4); assertEquals ((hosszú) stringLength.get ("John"), 4);

Mivel a kulcs „John” nincs jelen, az érték átadásával kiszámítja a kulcs paramétereként a mappingFunction.

2.3. A függvény leképezése visszatér nulla

Továbbá, ha a mappingFunction visszatér nulla, a térkép nem rögzít leképezést:

Térkép stringLength = új HashMap (); assertEquals (stringLength.computeIfAbsent ("John", s -> null), null); assertNull (stringLength.get ("John"));

2.4. A függvény leképezése kivételt dob

Végül, ha a mappingFunction dob egy ellenőrizetlen kivételt, akkor a kivétel újra dobásra kerül, és a térkép nem rögzít leképezést:

@Test (várható = RuntimeException.class) public void whenMappingFunctionThrowsException_thenExceptionIsRethrown () {Map stringLength = new HashMap (); stringLength.computeIfAbsent ("John", s -> {dobjon új RuntimeException ();}); }

Látjuk, hogy a mappingFunction dob egy RuntimeException, amely továbbterjed a computeIfAbsent módszer.

3. Következtetés

Ebben a gyors cikkben a computeIfAbsent módszer, annak aláírása és használata. Végül láttuk, hogyan kezeli a különböző eseteket.

Mint mindig, ezek a kódminták elérhetők a GitHubon.


$config[zx-auto] not found$config[zx-overlay] not found