Java HashMap birleştirme ()

Java HashMap merge () yöntemi, belirtilen anahtar zaten mevcut değilse, hashmap'e belirtilen anahtar / değer eşlemesini ekler.

Belirtilen anahtar zaten bir değerle ilişkilendirilmişse, yöntem eski değeri belirtilen işlevin sonucuyla değiştirir.

merge()Yöntemin sözdizimi şöyledir:

 hashmap.merge(key, value, remappingFunction)

Burada hashmap, HashMapsınıfın bir nesnesidir .

merge () Parametreler

merge()Yöntem 3 parametreleri alır:

  • anahtar - belirtilen değerin ilişkilendirileceği anahtar
  • değer - anahtar zaten herhangi bir değerle ilişkilendirilmişse, anahtarla ilişkilendirilecek değer
  • remappingFunction - anahtar zaten bir değerle ilişkilendirilmişse anahtarla ilişkilendirilecek sonuç

merge () Dönüş Değeri

  • anahtarla ilişkili yeni değeri döndürür
  • nullanahtarla ilişkili bir değer yoksa döndürür

Not : remappingFunction sonuçlanırsa null, belirtilen anahtar için eşleme kaldırılır.

Örnek 1: Yeni Giriş Eklemek için HashMap birleştirme ()

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

Çıktı

 HashMap: (Pantolon = 150, Çanta = 300, Ayakkabı = 200) Gömlek Fiyatı: 100 Güncellenmiş HashMap: (Pantolon = 150, Gömlek = 100, Çanta = 300, Ayakkabı = 200)

Yukarıdaki örnekte, fiyatlar adlı bir hashmap oluşturduk. İfadeye dikkat edin,

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

Burada, (oldValue, newValue) -> oldValue + newValue)yeniden eşleme fonksiyonu olarak lambda ifadesini kullandık . Lambda ifadesi hakkında daha fazla bilgi edinmek için Java Lambda İfadeleri sayfasını ziyaret edin.

Anahtar Gömlek fiyatlarda bulunmadığından, merge()yöntem eşlemeyi ekler Shirt=100. Ve yeniden eşleme işlevinin sonucu göz ardı edilir.

Örnek 2: Yinelenen Anahtarla Giriş Eklemek için HashMap merge ()

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

Çıktı

 HashMap: (Madrid = İspanya, Canberra = Avustralya, Washington = Amerika) Washington: Amerika / ABD Güncellenmiş HashMap: (Madrid = İspanya, Canberra = Avustralya, Washington = Amerika / ABD), 

Yukarıdaki örnekte, ülkeler adlı bir hashmap oluşturduk. İfadeye dikkat edin,

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

Burada, (oldValue, newValue) -> oldValue + "/" + newValue)yeniden eşleme fonksiyonu olarak lambda ifadesini kullandık .

Washington, ülkelerde zaten mevcut olduğundan, eski değer, yeniden eşleme işlevi tarafından döndürülen değerle değiştirilir. Dolayısıyla, Washington için haritalama, Amerika / ABD değerini içerir.

Örnek 3: İki HashMaps'i birleştirmek için HashMap birleştirme ()

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

Çıktı

 HashMap 1: (Pantolon = 230, Ayakkabı = 350) HashMap 2: (Gömlek = 150, Ayakkabı = 320) Birleştirilmiş HashMap: (Pantolon = 230, Gömlek = 150, Ayakkabı = 320)

Yukarıdaki örnekte, fiyatlar1 ve fiyatlar2 adlı iki hashmap oluşturduk. Koda dikkat edin,

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

Burada, HashMap forEach () yöntemi, hashmap fiyatlarının2 her girişine erişir ve bunu hashmap fiyatları1 ile birleştirir. İki lambda ifadesi kullandık:

  • (anahtar, değer) -> fiyatlar.merge (…) - Fiyatların1 her girişine erişir ve bunu merge()yönteme aktarır .
  • (oldValue, newValue) -> (…) - Yeniden eşleme işlevidir. İki değeri karşılaştırır ve daha küçük değeri döndürür.

Ayakkabı anahtarları her iki karma haritada da bulunduğundan, Shoes değerinin yerini yeniden eşleme işlevinin sonucu alır.

Java HashMap birleştirme () Vs. putAll

putAll()İki hashmap'i birleştirmek için yöntemi de kullanabiliriz . Bununla birlikte, her iki karma eşlemde de bir anahtar varsa, eski değer yeni değerle değiştirilir.

Yöntemden farklı olarak merge(), putAll()yöntem yeniden eşleme işlevi sağlamaz. Bu nedenle, yinelenen anahtarlar için hangi değerin saklanacağına karar veremiyoruz.

putAll()Yöntem hakkında daha fazla bilgi edinmek için Java HashMap putAll () adresini ziyaret edin.

Ilginç makaleler...