Penggabungan HashMap Jawa ()

Metode Java HashMap merge () menyisipkan pemetaan kunci / nilai yang ditentukan ke hashmap jika kunci yang ditentukan sudah tidak ada.

Jika kunci yang ditentukan sudah dikaitkan dengan sebuah nilai, metode ini mengganti nilai lama dengan hasil dari fungsi yang ditentukan.

Sintaks dari merge()metode ini adalah:

 hashmap.merge(key, value, remappingFunction)

Di sini, hashmap adalah objek HashMapkelas.

merge () Parameter

The merge()Metode memakan waktu 3 parameter:

  • key - key yang akan dikaitkan dengan nilai yang ditentukan
  • 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

merge () Nilai Kembali

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

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

Contoh 1: HashMap merge () untuk Menyisipkan 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); ) )

Keluaran

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

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

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

Di sini, kami telah menggunakan ekspresi lambda, (oldValue, newValue) -> oldValue + newValue)sebagai fungsi pemetaan ulang. Untuk mempelajari lebih lanjut tentang ekspresi lambda, kunjungi Java Lambda Expressions.

Karena Kaos kunci tidak ada dalam harga, merge()metode ini memasukkan pemetaan Shirt=100. Dan, hasil dari fungsi pemetaan ulang diabaikan.

Contoh 2: HashMap merge () untuk Menyisipkan Entri dengan Kunci Duplikat

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

Keluaran

 HashMap: (Madrid = Spanyol, Canberra = Australia, Washington = Amerika) Washington: Amerika / AS Diperbarui HashMap: (Madrid = Spanyol, Canberra = Australia, Washington = Amerika / AS), 

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

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

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

Karena kunci Washington sudah ada di negara-negara, nilai lama diganti dengan nilai yang dikembalikan oleh fungsi pemetaan ulang. Karenanya, pemetaan untuk Washington memasukkan nilai Amerika / USA.

Contoh 3: HashMap merge () untuk Menggabungkan dua HashMaps

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

Keluaran

 HashMap 1: (Celana = 230, Sepatu = 350) HashMap 2: (Baju = 150, Sepatu = 320) HashMap Gabungan: (Celana = 230, Baju = 150, Sepatu = 320)

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

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

Di sini, metode HashMap forEach () mengakses setiap entri harga2 hashmap dan menggabungkannya ke harga hashmap1. Kami telah menggunakan dua ekspresi lambda:

  • (key, value) -> prices.merge (…) - Ini mengakses setiap entri harga1 dan meneruskannya ke merge()metode.
  • (oldValue, newValue) -> (…) - Ini adalah fungsi pemetaan ulang. Ini membandingkan dua nilai dan mengembalikan nilai yang lebih kecil.

Karena kunci Shoes ada di kedua peta hash, nilai Shoes diganti dengan hasil dari fungsi pemetaan ulang.

Penggabungan HashMap Java () Vs. putAll

Kita juga bisa menggunakan putAll()metode ini untuk menggabungkan dua hashmaps. Namun, jika kunci ada di kedua hashmaps, nilai lama akan diganti dengan nilai baru.

Berbeda dengan merge(), putAll()metode ini tidak menyediakan fungsi pemetaan ulang. Karenanya, kami tidak dapat memutuskan nilai apa yang akan disimpan untuk kunci duplikat.

Untuk mempelajari lebih lanjut tentang putAll()metode ini, kunjungi Java HashMap putAll ().

Artikel yang menarik...