A Java HashMap computeIfAbsent () metódus új értéket számol ki és társítja a megadott kulccsal, ha a kulcs nincs társítva a hashmap egyik értékéhez sem.
A computeIfAbsent()
módszer szintaxisa :
hashmap.computeIfAbsent(K key, Function remappingFunction)
Itt a hashmap az HashMap
osztály objektuma .
computeIfAbsent () paraméterek
A computeIfAbsent()
módszer 2 paramétert vesz fel:
- kulcs - kulcs, amelyhez a számított értéket társítani kell
- remappingFunction - függvény, amely kiszámítja a megadott kulcs új értékét
Megjegyzés : Az újratervezési függvény nem tartalmazhat két argumentumot.
computeIfAbsent () visszatérési érték
- a megadott kulccsal társított új vagy régi értéket adja vissza
- visszatér,
null
ha a kulcshoz nincs társítva érték
Megjegyzés : Ha a remappingFunction eredményt ad null
, akkor a megadott kulcs hozzárendelése eltávolításra kerül.
1. példa: Java HashMap computeIfAbsent ()
import java.util.HashMap; class Main ( public static void main(String() args) ( // create an HashMap HashMap prices = new HashMap(); // insert entries to the HashMap prices.put("Shoes", 200); prices.put("Bag", 300); prices.put("Pant", 150); System.out.println("HashMap: " + prices); // compute the value of Shirt int shirtPrice = prices.computeIfAbsent("Shirt", key -> 280); System.out.println("Price of Shirt: " + shirtPrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )
Kimenet
HashMap: (nadrág = 150, táska = 300, cipő = 200) az ing ára: 280 frissített HashMap: (nadrág = 150, ing = 280, táska = 300, cipő = 200)
A fenti példában létrehoztunk egy hashmap nevű árakat. Figyelje meg a kifejezést,
prices.computeIfAbsent("Shirt", key -> 280)
Itt,
- kulcs -> 280 egy lambda kifejezés. Visszaadja a 280 értéket. Ha többet szeretne megtudni a lambda kifejezésről, keresse fel a Java Lambda kifejezéseket.
- Az árak.computeIfAbsent () a lambda kifejezéssel visszaküldött új értéket társítja a Póló leképezéséhez. Csak azért lehetséges, mert a pólót már nem rendelték hozzá a hashmap egyik értékéhez sem.
2. példa: computeIfAbsent (), ha a kulcs már megvan
import java.util.HashMap; class Main ( public static void main(String() args) ( // create an HashMap HashMap prices = new HashMap(); // insert entries to the HashMap prices.put("Shoes", 180); prices.put("Bag", 300); prices.put("Pant", 150); System.out.println("HashMap: " + prices); // mapping for Shoes is already present // new value for Shoes is not computed int shoePrice = prices.computeIfAbsent("Shoes", (key) -> 280); System.out.println("Price of Shoes: " + shoePrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )
Kimenet
HashMap: (nadrág = 150, táska = 300, cipő = 180) a cipő ára: 180 frissített HashMap: (nadrág = 150, táska = 300, cipő = 180)
A fenti példában a Cipők leképezése már szerepel a hashmap-ban. Ezért a computeIfAbsent()
módszer nem számítja ki a cipők új értékét.
Ajánlott olvasmány
- HashMap compute () - kiszámítja a megadott kulcs értékét
- HashMap computeIfPresent () - kiszámítja az értéket, ha a megadott kulcs már hozzárendelve egy értékhez
- Java HashMap merge () - ugyanazt a feladatot hajtja végre, mint
compute()