Java HashMap computeIfPresent ()

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

Sintaks dari computeIfPresent()metode ini adalah:

 hashmap.computeIfPresent(K key, BiFunction remappingFunction)

Di sini, hashmap adalah objek HashMapkelas.

computeIfPresent () Parameter

The computeIfPresent()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 remapping dapat mengambil dua argumen. Karenanya, dianggap sebagai BiFungsi.

computeIfPresent () Nilai Kembali

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

Keluaran

 HashMap: (Celana = 150, Tas = 300, Sepatu = 200) Harga Sepatu setelah PPN: 220 Diperbarui HashMap: (Celana = 150, Tas = 300, Sepatu = 220))

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

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

Sini,

  • (key, value) -> value + value * 10/100 adalah ekspresi lambda. Ini menghitung nilai baru Sepatu dan mengembalikannya. Untuk mempelajari lebih lanjut tentang ekspresi lambda, kunjungi Java Lambda Expressions.
  • prices.computeIfPresent () mengaitkan nilai baru yang dikembalikan oleh ekspresi lambda ke pemetaan untuk Shoes. Ini hanya mungkin karena Shoes sudah dipetakan ke sebuah nilai dalam hashmap.

Di sini, ekspresi lambda bertindak sebagai fungsi pemetaan ulang. Dan, dibutuhkan dua parameter.

Catatan : Kita tidak bisa menggunakan computeIfPresent()metode ini jika kuncinya tidak ada dalam hashmap.

Bacaan yang Direkomendasikan

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

Artikel yang menarik...