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 HashMap
klassen.
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,
null
hvis 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 ().