Gabungan HashMap Java ()

Kaedah gabungan Java HashMap () memasukkan pemetaan kunci / nilai yang ditentukan ke peta hash jika kunci yang ditentukan sudah tidak ada.

Sekiranya kunci yang ditentukan sudah dikaitkan dengan nilai, kaedah menggantikan nilai lama dengan hasil fungsi yang ditentukan.

Sintaks merge()kaedahnya adalah:

 hashmap.merge(key, value, remappingFunction)

Di sini, hashmap adalah objek HashMapkelas.

menggabungkan () Parameter

The merge()Cara mengambil masa 3 parameter:

  • key - key dengan nilai yang ditentukan untuk dikaitkan
  • nilai - nilai yang akan dikaitkan dengan kunci, jika kunci sudah dikaitkan dengan nilai apa pun
  • remappingFunction - hasil untuk dikaitkan dengan kunci jika kunci sudah dikaitkan dengan nilai

menggabungkan () Nilai Pulangan

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

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

Contoh 1: Gabungan HashMap () untuk Masukkan Entri Baru

 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); int returnedValue = prices.merge("Shirt", 100, (oldValue, newValue) -> oldValue + newValue); System.out.println("Price of Shirt: " + returnedValue); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )

Pengeluaran

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

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

 prices.merge("Shirt", 100, (oldValue, newValue) -> oldValue + newValue)

Di sini, kami telah menggunakan ungkapan lambda, (oldValue, newValue) -> oldValue + newValue)sebagai fungsi pemetaan semula. Untuk mengetahui lebih lanjut mengenai ungkapan lambda, kunjungi Java Lambda Expressions.

Oleh kerana Baju kunci tidak terdapat dalam harga, merge()kaedah memasukkan pemetaan Shirt=100. Dan, hasil dari fungsi pemetaan semula diabaikan.

Contoh 2: Gabungan HashMap () untuk Memasukkan Entri dengan Kunci Pendua

 import java.util.HashMap; class Main ( public static void main(String() args) ( // create an HashMap HashMap countries = new HashMap(); // insert entries to the HashMap countries.put("Washington", "America"); countries.put("Canberra", "Australia"); countries.put("Madrid", "Spain"); System.out.println("HashMap: " + countries); // merge mapping for key Washington String returnedValue = countries.merge("Washington", "USA", (oldValue, newValue) -> oldValue + "/" + newValue); System.out.println("Washington: " + returnedValue); // print updated HashMap System.out.println("Updated HashMap: " + countries); ) )

Pengeluaran

 HashMap: (Madrid = Sepanyol, Canberra = Australia, Washington = Amerika) Washington: Amerika / AS Dikemas kini HashMap: (Madrid = Sepanyol, Canberra = Australia, Washington = Amerika / AS), 

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

 countries.merge("Washington", "USA", (oldValue, newValue) -> oldValue + "/" + newValue)

Di sini, kami telah menggunakan ungkapan lambda, (oldValue, newValue) -> oldValue + "/" + newValue)sebagai fungsi pemetaan semula.

Oleh kerana kunci Washington sudah ada di negara-negara, nilai lama digantikan dengan nilai yang dikembalikan oleh fungsi pemetaan semula. Oleh itu, pemetaan untuk Washington merangkumi nilai Amerika / AS.

Contoh 3: Gabungan HashMap () untuk Menggabungkan dua HashMap

 import java.util.HashMap; class Main ( public static void main(String() args) ( // create an HashMap HashMap prices1 = new HashMap(); // insert entries to the HashMap prices1.put("Pant", 230); prices1.put("Shoes", 350); System.out.println("HashMap 1: " + prices1); // create another hashmap HashMap prices2 = new HashMap(); //insert entries to the HashMap prices2.put("Shirt", 150); prices2.put("Shoes", 320); System.out.println("HashMap 2: " + prices2); // forEach() access each entries of prices2 // merge() inserts each entry from prices2 to prices1 prices2.forEach((key, value) -> prices1.merge(key, value, (oldValue, newValue) -> ( // return the smaller value if (oldValue < newValue) ( return oldValue; ) else ( return newValue; ) ))); System.out.println("Merged HashMap: " + prices1); ) )

Pengeluaran

 HashMap 1: (Seluar = 230, Kasut = 350) HashMap 2: (Baju = 150, Kasut = 320) Gabung HashMap: (Seluar = 230, Baju = 150, Kasut = 320)

Dalam contoh di atas, kami telah membuat dua hashmaps yang bernama harga1 dan harga2. Perhatikan kodnya,

  prices2.forEach((key, value) -> prices1.merge(key, value, (oldValue, newValue) -> ( if (oldValue < newValue) ( return oldValue; ) else ( return newValue; ) )));

Di sini, kaedah HashMap forEach () mengakses setiap entri harga hashmap2 dan menggabungkannya ke harga hashmap1. Kami telah menggunakan dua ungkapan lambda:

  • (kunci, nilai) -> harga.merge (…) - Ia mengakses setiap entri harga1 dan meneruskannya ke merge()kaedah.
  • (oldValue, newValue) -> (…) - Ini adalah fungsi pemetaan semula. Ia membandingkan dua nilai dan mengembalikan nilai yang lebih kecil.

Oleh kerana Kasut utama terdapat dalam kedua-dua hashmap, nilai Kasut digantikan oleh hasil fungsi pemetaan semula.

Gabungan HashMap Java () Vs. meletakkanSemua

Kita juga boleh menggunakan putAll()kaedah untuk menggabungkan dua hashmap. Namun, jika kunci ada di kedua-dua hashmap, nilai lama digantikan dengan nilai baru.

Tidak seperti kaedah merge(), putAll()kaedah ini tidak menyediakan fungsi pemetaan semula. Oleh itu, kami tidak dapat menentukan nilai apa yang akan disimpan untuk kunci pendua.

Untuk mengetahui lebih lanjut mengenai putAll()kaedah tersebut, lawati Java HashMap putAll ().

Artikel menarik...