Java HashMap computeIfAbsent ()

Metode Java HashMap computeIfAbsent () menghitung nilai baru dan mengaitkannya dengan kunci yang ditentukan jika kunci tidak terkait dengan nilai apa pun dalam hashmap.

Sintaks dari computeIfAbsent()metode ini adalah:

 hashmap.computeIfAbsent(K key, Function remappingFunction)

Di sini, hashmap adalah objek HashMapkelas.

computeIfAbsent () Parameter

The computeIfAbsent()Metode mengambil 2 parameter:

  • key - key yang akan dikaitkan dengan nilai yang dihitung
  • remappingFunction - fungsi yang menghitung nilai baru untuk kunci yang ditentukan

Catatan : Fungsi pemetaan ulang tidak dapat mengambil dua argumen.

computeIfAbsent () Nilai Kembali

  • mengembalikan nilai baru atau lama yang terkait dengan kunci yang ditentukan
  • kembali nulljika tidak ada nilai yang terkait dengan kunci

Catatan : Jika remappingFunction menghasilkan null, maka pemetaan untuk kunci yang ditentukan akan dihapus.

Contoh 1: 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); ) )

Keluaran

 HashMap: (Pant = 150, Bag = 300, Shoes = 200) Harga Kaos: 280 Update HashMap: (Pant = 150, Shirt = 280, Bag = 300, Shoes = 200)

Dalam contoh di atas, kami telah membuat hashmap bernama harga. Perhatikan ekspresinya,

 prices.computeIfAbsent("Shirt", key -> 280)

Sini,

  • key -> 280 adalah ekspresi lambda. Ini mengembalikan nilai 280. Untuk mempelajari lebih lanjut tentang ekspresi lambda, kunjungi Java Lambda Expressions.
  • prices.computeIfAbsent () mengaitkan nilai baru yang dikembalikan oleh ekspresi lambda ke pemetaan untuk Shirt. Ini hanya mungkin karena Shirt belum dipetakan ke nilai apa pun di hashmap.

Contoh 2: computeIfAbsent () jika kuncinya sudah ada

 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); ) )

Keluaran

 HashMap: (Pant = 150, Bag = 300, Shoes = 180) Harga Sepatu: 180 Update HashMap: (Pant = 150, Bag = 300, Shoes = 180)

Pada contoh di atas, pemetaan untuk Shoes sudah ada di hashmap. Karenanya, computeIfAbsent()metode tersebut tidak menghitung nilai baru untuk Shoes.

Bacaan yang Direkomendasikan

  • HashMap compute () - menghitung nilai untuk kunci yang ditentukan
  • HashMap computeIfPresent () - menghitung nilai jika kunci yang ditentukan sudah dipetakan ke suatu nilai
  • Java HashMap merge () - melakukan tugas yang sama seperti compute()

Artikel yang menarik...