Java HashMap merge ()

Die Java HashMap merge () -Methode fügt die angegebene Schlüssel- / Wertzuordnung in die Hashmap ein, wenn der angegebene Schlüssel bereits nicht vorhanden ist.

Wenn der angegebene Schlüssel bereits einem Wert zugeordnet ist, ersetzt die Methode den alten Wert durch das Ergebnis der angegebenen Funktion.

Die Syntax der merge()Methode lautet:

 hashmap.merge(key, value, remappingFunction)

Hier ist Hashmap ein Objekt der HashMapKlasse.

merge () Parameter

Die merge()Methode akzeptiert 3 Parameter:

  • Schlüssel - Schlüssel, dem der angegebene Wert zugeordnet werden soll
  • value - Wert, der dem Schlüssel zugeordnet werden soll, wenn der Schlüssel bereits einem Wert zugeordnet ist
  • remappingFunction - Ergebnis, das dem Schlüssel zugeordnet werden soll, wenn der Schlüssel bereits einem Wert zugeordnet ist

merge () Rückgabewert

  • Gibt den neuen Wert zurück, der dem Schlüssel zugeordnet ist
  • Gibt zurück, nullwenn dem Schlüssel kein Wert zugeordnet ist

Hinweis : Wenn remappingFunction resultiert null, wird die Zuordnung für den angegebenen Schlüssel entfernt.

Beispiel 1: HashMap merge () zum Einfügen eines neuen Eintrags

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

Ausgabe

 HashMap: (Hose = 150, Tasche = 300, Schuhe = 200) Preis des Shirts: 100 Aktualisierte HashMap: (Hose = 150, Shirt = 100, Tasche = 300, Schuhe = 200)

Im obigen Beispiel haben wir eine Hashmap mit dem Namen Preise erstellt. Beachten Sie den Ausdruck,

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

Hier haben wir den Lambda-Ausdruck (oldValue, newValue) -> oldValue + newValue)als Remapping-Funktion verwendet. Weitere Informationen zum Lambda-Ausdruck finden Sie unter Java Lambda-Ausdrücke.

Da das Schlüsselhemd in den Preisen nicht vorhanden ist, merge()fügt die Methode die Zuordnung ein Shirt=100. Das Ergebnis der Neuzuordnungsfunktion wird ignoriert.

Beispiel 2: HashMap merge () zum Einfügen eines Eintrags mit doppeltem Schlüssel

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

Ausgabe

 HashMap: (Madrid = Spanien, Canberra = Australien, Washington = Amerika) Washington: Amerika / USA Aktualisierte HashMap: (Madrid = Spanien, Canberra = Australien, Washington = Amerika / USA), 

Im obigen Beispiel haben wir eine Hashmap mit dem Namen "Länder" erstellt. Beachten Sie den Ausdruck,

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

Hier haben wir den Lambda-Ausdruck (oldValue, newValue) -> oldValue + "/" + newValue)als Remapping-Funktion verwendet.

Da der Schlüssel Washington bereits in Ländern vorhanden ist, wird der alte Wert durch den Wert ersetzt, der durch die Remapping-Funktion zurückgegeben wird. Daher enthält die Zuordnung für Washington den Wert Amerika / USA.

Beispiel 3: HashMap merge (), um zwei HashMaps zusammenzuführen

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

Ausgabe

 HashMap 1: (Hose = 230, Schuhe = 350) HashMap 2: (Hemd = 150, Schuhe = 320) Zusammengeführte HashMap: (Hose = 230, Hemd = 150, Schuhe = 320)

Im obigen Beispiel haben wir zwei Hashmaps mit den Namen preise1 und preise2 erstellt. Beachten Sie den Code,

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

Hier greift die HashMap forEach () -Methode auf jeden Eintrag der Hashmap-Preise2 zu und führt ihn mit den Hashmap-Preisen1 zusammen. Wir haben zwei Lambda-Ausdrücke verwendet:

  • (Schlüssel, Wert) -> price.merge (…) - Es greift auf jeden Eintrag von price1 zu und übergibt ihn an die merge()Methode.
  • (oldValue, newValue) -> (…) - Dies ist eine Neuzuordnungsfunktion. Es vergleicht zwei Werte und gibt den kleineren Wert zurück.

Da der Schlüssel Schuhe in beiden Hashmaps vorhanden ist, wird der Wert von Schuhe durch das Ergebnis der Neuzuordnungsfunktion ersetzt.

Java HashMap merge () Vs. putAll

Wir können die putAll()Methode auch verwenden , um zwei Hashmaps zusammenzuführen. Wenn jedoch in beiden Hashmaps ein Schlüssel vorhanden ist, wird der alte Wert durch den neuen Wert ersetzt.

Im Gegensatz zu merge()bietet die putAll()Methode keine Remapping-Funktion. Daher können wir nicht entscheiden, welcher Wert für doppelte Schlüssel gespeichert werden soll.

Um mehr über die putAll()Methode zu erfahren , besuchen Sie Java HashMap putAll ().

Interessante Beiträge...