Java HashMap computeIfPresent ()

Kaedah Java HashMap computeIfPresent () mengira nilai baru dan mengaitkannya dengan kunci yang ditentukan jika kunci sudah ada dalam hashmap.

Sintaks computeIfPresent()kaedahnya adalah:

 hashmap.computeIfPresent(K key, BiFunction remappingFunction)

Di sini, hashmap adalah objek HashMapkelas.

computeIfPresent () Parameter

The computeIfPresent()Cara mengambil masa 2 parameter:

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

Nota : Fungsi remapping dapat mengambil dua argumen. Oleh itu, dianggap sebagai BiFungsi.

computeIfPresent () Nilai Pulangan

  • mengembalikan nilai baru 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 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); ) )

Pengeluaran

 HashMap: (Seluar = 150, Beg = 300, Kasut = 200) Harga Kasut selepas PPN: 220 HashMap Dikemas kini: (Seluar = 150, Beg = 300, Kasut = 220))

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

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

Di sini,

  • (kunci, nilai) -> nilai + nilai * 10/100 adalah ungkapan lambda. Ia mengira nilai baru Kasut dan mengembalikannya. Untuk mengetahui lebih lanjut mengenai ungkapan lambda, kunjungi Java Lambda Expressions.
  • harga.computeIfPresent () mengaitkan nilai baru yang dikembalikan oleh lambda ekspresi ke pemetaan untuk Kasut. Ini hanya mungkin kerana Kasut sudah dipetakan ke nilai dalam hashmap.

Di sini, ungkapan lambda bertindak sebagai fungsi pemetaan semula. Ia memerlukan dua parameter.

Catatan : Kami tidak dapat menggunakan computeIfPresent()kaedah jika kunci tidak terdapat dalam hashmap.

Bacaan yang Disyorkan

  • HashMap compute () - mengira nilai untuk kekunci yang ditentukan
  • HashMap computeIfAbsent () - mengira nilai jika kunci yang ditentukan tidak dipetakan ke nilai apa pun
  • Penggabungan Java HashMap () - melakukan tugas yang sama seperti compute()

Artikel menarik...