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 HashMap
kelas.
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
null
jika 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 ().