Java HashMap computeIfPresent ()

A Java HashMap computeIfPresent () metódus kiszámít egy új értéket és társítja azt a megadott kulccsal, ha a kulcs már szerepel a hashmap-ban.

A computeIfPresent()módszer szintaxisa :

 hashmap.computeIfPresent(K key, BiFunction remappingFunction)

Itt a hashmap az HashMaposztály objektuma .

computeIfPresent () paraméterek

A computeIfPresent()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 : A remappingFunction két argumentumot tartalmazhat. Ezért tekinthető BiFunction-nak.

computeIfPresent () visszatérési érték

  • a megadott kulccsal társított új értéket adja vissza
  • visszatér, nullha 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 computeIfPresent ()

 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); // recompute the value of Shoes with 10% VAT int shoesPrice = prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100); System.out.println("Price of Shoes after VAT: " + shoesPrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )

Kimenet

 HashMap: (nadrág = 150, táska = 300, cipő = 200) a cipő ára áfa után: 220 frissített HashMap: (nadrág = 150, táska = 300, cipő = 220))

A fenti példában létrehoztunk egy hashmap nevű árakat. Figyelje meg a kifejezést,

 prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100)

Itt,

  • (kulcs, érték) -> érték + érték * 10/100 egy lambda kifejezés. Kiszámítja a Shoes új értékét és visszaadja. Ha többet szeretne megtudni a lambda kifejezésről, keresse fel a Java Lambda kifejezéseket.
  • Az árak.computeIfPresent () a lambda kifejezéssel visszaadott új értéket társítja a Cipők leképezéséhez. Csak azért lehetséges, mert a Shoes már fel van térképezve egy értékre a hashmap-ban.

Itt a lambda kifejezés újrarendező funkcióként működik. Két paraméterre van szükség.

Megjegyzés : Nem használhatjuk a computeIfPresent()módszert, ha a kulcs nincs a hashmap-ban.

Ajánlott olvasmány

  • HashMap compute () - kiszámítja a megadott kulcs értékét
  • HashMap computeIfAbsent () - kiszámítja az értéket, ha a megadott kulcs nincs hozzárendelve egyetlen értékhez sem
  • Java HashMap merge () - ugyanazt a feladatot hajtja végre, mint compute()

érdekes cikkek...