Java HashMap-fletning ()

Metoden Java HashMap merge () indsætter den angivne nøgle / værditilknytning til hashmap, hvis den angivne nøgle ikke allerede er til stede.

Hvis den angivne nøgle allerede er knyttet til en værdi, erstatter metoden den gamle værdi med resultatet af den angivne funktion.

Metodens syntaks merge()er:

 hashmap.merge(key, value, remappingFunction)

Her er hashmap et objekt i HashMapklassen.

flet () parametre

Den merge()metode tager 3 parametre:

  • nøgle - nøgle, som den angivne værdi skal tilknyttes
  • værdi - værdi, der skal knyttes til nøglen, hvis nøglen allerede er knyttet til en hvilken som helst værdi
  • remappingFunction - resultat, der knyttes til nøglen, hvis nøglen allerede er knyttet til en værdi

fusionere () Return Value

  • returnerer den nye værdi, der er knyttet til nøglen
  • returnerer, nullhvis der ikke er nogen værdi tilknyttet nøglen

Bemærk : Hvis der vises en remappingFunction null, fjernes kortlægningen for den angivne nøgle .

Eksempel 1: HashMap fusionere () for at indsætte ny post

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

Produktion

 HashMap: (Pant = 150, Bag = 300, Sko = 200) Pris på trøje: 100 Opdateret HashMap: (Pant = 150, Shirt = 100, Bag = 300, Sko = 200)

I ovenstående eksempel har vi oprettet en hashmap med priserne. Bemærk udtrykket,

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

Her har vi brugt lambda-udtrykket (oldValue, newValue) -> oldValue + newValue)som en remapping-funktion. For at lære mere om lambda-udtryk, besøg Java Lambda Expressions.

Da nøglen Shirt ikke er til stede i priser, indsætter merge()metoden kortlægningen Shirt=100. Og resultatet fra omkortningsfunktion ignoreres.

Eksempel 2: HashMap fusionere () for at indsætte post med duplikatnøgle

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

Produktion

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

I ovenstående eksempel har vi oprettet et hashmap navngivet lande. Bemærk udtrykket,

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

Her har vi brugt lambda-udtrykket (oldValue, newValue) -> oldValue + "/" + newValue)som remapping-funktion.

Da nøglen Washington allerede er til stede i lande, erstattes den gamle værdi med den værdi, der returneres ved hjælp af en remapping-funktion. Derfor inkluderer kortlægningen for Washington værdien Amerika / USA.

Eksempel 3: HashMap fusionere () for at flette to 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); ) )

Produktion

 HashMap 1: (Pant = 230, Sko = 350) HashMap 2: (Shirt = 150, Sko = 320) Flettet HashMap: (Pant = 230, Shirt = 150, Sko = 320)

I eksemplet ovenfor har vi oprettet to hashmapper med navngivne priser1 og priser2. Bemærk koden,

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

Her får HashMap forEach () -metoden adgang til hver indtastning af hashmap-priser2 og fletter den til hashmap-priser1. Vi har brugt to lambda-udtryk:

  • (nøgle, værdi) -> priser.merge (…) - Den får adgang til hver indtastning af priser1 og videregiver den til merge()metoden.
  • (oldValue, newValue) -> (…) - Det er en genkortlægningsfunktion. Den sammenligner to værdier og returnerer den mindre værdi.

Da nøglen Sko er til stede i både hashmap, erstattes værdien af ​​Sko med resultatet af remapping-funktionen.

Java HashMap fusionere () Vs. sæt alt

Vi kan også bruge putAll()metoden til at flette to hashmaps. Men hvis en nøgle er til stede i begge hashmaps, erstattes den gamle værdi med den nye værdi.

I modsætning til merge(), giver putAll()metoden ikke genkortfunktionen. Derfor kan vi ikke beslutte, hvilken værdi der skal gemmes for duplikatnøgler.

Hvis du vil lære mere om putAll()metoden, skal du besøge Java HashMap putAll ().

Interessante artikler...