Java HashMap samenvoegen ()

De Java HashMap merge () - methode voegt de opgegeven sleutel / waarde-toewijzing in de hashmap in als de opgegeven sleutel al niet aanwezig is.

Als de opgegeven sleutel al is gekoppeld aan een waarde, vervangt de methode de oude waarde door het resultaat van de opgegeven functie.

De syntaxis van de merge()methode is:

 hashmap.merge(key, value, remappingFunction)

Hier is hashmap een object van de HashMapklasse.

merge () Parameters

De merge()methode heeft 3 parameters nodig:

  • key - sleutel waarmee de opgegeven waarde moet worden geassocieerd
  • waarde - waarde die aan de sleutel moet worden gekoppeld, als de sleutel al aan een waarde is gekoppeld
  • remappingFunction - resultaat dat aan sleutel moet worden gekoppeld als sleutel al aan een waarde is gekoppeld

merge () Retourwaarde

  • geeft de nieuwe waarde terug die aan de sleutel is gekoppeld
  • geeft terug nullals er geen waarde is gekoppeld aan de sleutel

Opmerking : als remappingFunction resultaten oplevert null, wordt de toewijzing voor de opgegeven sleutel verwijderd.

Voorbeeld 1: HashMap merge () om een ​​nieuw item in te voegen

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

Uitvoer

 HashMap: (Broek = 150, Tas = 300, Schoenen = 200) Prijs van shirt: 100 Bijgewerkte HashMap: (Broek = 150, Shirt = 100, Tas = 300, Schoenen = 200)

In het bovenstaande voorbeeld hebben we een hashmap gemaakt met de naam prijzen. Let op de uitdrukking,

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

Hier hebben we de lambda-uitdrukking gebruikt (oldValue, newValue) -> oldValue + newValue)als de remapping-functie. Bezoek Java Lambda Expressions voor meer informatie over lambda-expressies.

Omdat de sleutel Shirt niet in prijzen aanwezig is, merge()voegt de methode de mapping in Shirt=100. En het resultaat van het opnieuw toewijzen van de functie wordt genegeerd.

Voorbeeld 2: HashMap merge () om een ​​item in te voegen met een dubbele sleutel

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

Uitvoer

 HashMap: (Madrid = Spanje, Canberra = Australië, Washington = Amerika) Washington: Amerika / VS Bijgewerkte HashMap: (Madrid = Spanje, Canberra = Australië, Washington = Amerika / VS), 

In het bovenstaande voorbeeld hebben we een hashmap gemaakt met de naam landen. Let op de uitdrukking,

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

Hier hebben we de lambda-uitdrukking gebruikt (oldValue, newValue) -> oldValue + "/" + newValue)als de remapping-functie.

Omdat de sleutel Washington al aanwezig is in landen, wordt de oude waarde vervangen door de waarde die wordt geretourneerd door de functie opnieuw toewijzen. Daarom omvat de mapping voor Washington de waarde Amerika / VS.

Voorbeeld 3: HashMap merge () om twee HashMaps samen te voegen

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

Uitvoer

 HashMap 1: (Broek = 230, Schoenen = 350) HashMap 2: (Shirt = 150, Schoenen = 320) Samengevoegde HashMap: (Broek = 230, Shirt = 150, Schoenen = 320)

In het bovenstaande voorbeeld hebben we twee hashmaps gemaakt met de naam prijzen1 en prijzen2. Let op de code,

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

Hier benadert de HashMap forEach () -methode elke invoer van de hashmap-prijzen2 en voegt deze samen met de hashmap-prijzen1. We hebben twee lambda-uitdrukkingen gebruikt:

  • (sleutel, waarde) -> prices.merge (…) - Het krijgt toegang tot elke invoer van prijzen1 en geeft deze door aan de merge()methode.
  • (oldValue, newValue) -> (…) - Het is een remapping-functie. Het vergelijkt twee waarden en retourneert de kleinere waarde.

Omdat de sleutel Shoes aanwezig is in beide hashmaps, wordt de waarde van Shoes vervangen door het resultaat van de remapping-functie.

Java HashMap merge () Vs. zet alle

We kunnen de putAll()methode ook gebruiken om twee hashmaps samen te voegen. Als er echter een sleutel in beide hashmaps aanwezig is, wordt de oude waarde vervangen door de nieuwe waarde.

In tegenstelling tot de merge(), biedt de putAll()methode geen functie voor opnieuw toewijzen. Daarom kunnen we niet beslissen welke waarde moet worden opgeslagen voor dubbele sleutels.

putAll()Bezoek Java HashMap putAll () voor meer informatie over de methode.

Interessante artikelen...