Java HashMap computeIfAbsent ()

Kaedah Java HashMap computeIfAbsent () mengira nilai baru dan mengaitkannya dengan kunci yang ditentukan jika kunci tidak dikaitkan dengan nilai dalam hashmap.

Sintaks computeIfAbsent()kaedahnya adalah:

 hashmap.computeIfAbsent(K key, Function remappingFunction)

Di sini, hashmap adalah objek HashMapkelas.

computeIfAbsent () Parameter

The computeIfAbsent()Cara mengambil masa 2 parameter:

  • key - key dengan mana nilai dikira akan dikaitkan
  • remappingFunction - fungsi yang mengira nilai baru untuk kekunci yang ditentukan

Catatan : Fungsi pemetaan semula tidak boleh mengambil dua argumen.

computeIfAbsent () Nilai Pulangan

  • mengembalikan nilai baru atau lama yang berkaitan dengan kunci yang ditentukan
  • kembali nulljika tiada nilai yang dikaitkan dengan kunci

Catatan : Sekiranya hasil nullpemetaan semula fungsi, maka pemetaan untuk kunci yang ditentukan dikeluarkan.

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

Pengeluaran

 HashMap: (Seluar = 150, Beg = 300, Kasut = 200) Harga Baju: 280 Dikemas kini HashMap: (Seluar = 150, Baju = 280, Beg = 300, Kasut = 200)

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

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

Di sini,

  • kunci -> 280 adalah ungkapan lambda. Ia mengembalikan nilai 280. Untuk mengetahui lebih lanjut mengenai ungkapan lambda, lawati Java Lambda Expressions.
  • Rates.computeIfAbsent () mengaitkan nilai baru yang dikembalikan oleh lambda ekspresi ke pemetaan untuk Baju. Ini hanya mungkin kerana Baju belum dipetakan ke nilai dalam hashmap.

Contoh 2: computeIfAbsent () jika kunci 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); ) )

Pengeluaran

 HashMap: (Seluar = 150, Beg = 300, Kasut = 180) Harga Kasut: 180 Dikemas kini HashMap: (Seluar = 150, Beg = 300, Kasut = 180)

Dalam contoh di atas, pemetaan untuk Kasut sudah ada dalam hashmap. Oleh itu, computeIfAbsent()kaedah ini tidak menghitung nilai baru untuk Kasut.

Bacaan yang Disyorkan

  • HashMap compute () - mengira nilai untuk kekunci yang ditentukan
  • HashMap computeIfPresent () - mengira nilai jika kunci yang ditentukan sudah dipetakan ke nilai
  • Penggabungan Java HashMap () - melakukan tugas yang sama seperti compute()

Artikel menarik...