Java HashMap-sammanslagning ()

Metoden Java HashMap merge () infogar den angivna nyckel- / värdekartläggningen till hashmap om den angivna nyckeln inte redan finns.

Om den angivna nyckeln redan är associerad med ett värde ersätter metoden det gamla värdet med resultatet av den angivna funktionen.

Syntaxen för merge()metoden är:

 hashmap.merge(key, value, remappingFunction)

Här är hashmap ett objekt i HashMapklassen.

merge () Parametrar

Den merge()metod tar 3 parametrar:

  • nyckel - nyckel som det angivna värdet ska associeras med
  • värde - värde som ska associeras med nyckel, om nyckel redan är associerat med något värde
  • remappingFunction - resultat som ska associeras med nyckel om nyckel redan är associerad med ett värde

merge () Returvärde

  • returnerar det nya värdet som är associerat med nyckeln
  • returnerar nullom inget värde är associerat med nyckeln

Obs : Om resultat av remappingFunction tas bort tas nullmappningen för den angivna nyckeln bort.

Exempel 1: HashMap-sammanslagning () för att infoga 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: (Byxa = 150, väska = 300, skor = 200) Pris på skjorta: 100 Uppdaterad HashMap: (Byxa = 150, skjorta = 100, väska = 300, skor = 200)

I exemplet ovan har vi skapat en hashmap med namnet priser. Lägg märke till uttrycket,

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

Här har vi använt lambdauttrycket (oldValue, newValue) -> oldValue + newValue)som remapping-funktion. För att lära dig mer om lambdauttryck, besök Java Lambda Expressions.

Eftersom nyckelskjortan inte finns i priserna merge()infogar metoden kartläggningen Shirt=100. Och resultatet från ommappningsfunktionen ignoreras.

Exempel 2: HashMap-sammanslagning () för att infoga post med duplikatnyckel

 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 Uppdaterat HashMap: (Madrid = Spanien, Canberra = Australien, Washington = Amerika / USA), 

I exemplet ovan har vi skapat en hashmap med namnen länder. Lägg märke till uttrycket,

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

Här har vi använt lambdauttrycket (oldValue, newValue) -> oldValue + "/" + newValue)som remapping-funktion.

Eftersom nyckel Washington redan finns i länder, ersätts det gamla värdet med det värde som returneras med en ny mappningsfunktion. Därför inkluderar kartläggningen för Washington värdet Amerika / USA.

Exempel 3: HashMap merge () för att slå samman två 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, Shoes = 350) HashMap 2: (Shirt = 150, Shoes = 320) Sammanfogat HashMap: (Pant = 230, Shirt = 150, Shoes = 320)

I exemplet ovan har vi skapat två hashmaps med namnet prices1 och prices2. Lägg märke till koden,

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

Här får metoden HashMap forEach () åtkomst till varje post av hashmap-priserna2 och slås samman den med hashmap-priserna1. Vi har använt två lambdauttryck:

  • (key, value) -> prices.merge (…) - Den öppnar varje prisinmatning1 och skickar den till merge()metoden.
  • (oldValue, newValue) -> (…) - Det är en ombildningsfunktion. Den jämför två värden och returnerar det mindre värdet.

Eftersom nyckeln Skor finns i både hashmap ersätts värdet på Skor med resultatet av ommappningsfunktionen.

Java HashMap merge () Vs. sätt alla

Vi kan också använda putAll()metoden för att slå samman två hashmaps. Men om en nyckel finns i båda hashmaps ersätts det gamla värdet med det nya värdet.

Till skillnad från merge(), putAll()tillhandahåller metoden inte ommappningsfunktionen. Därför kan vi inte bestämma vilket värde som ska lagras för dubbla nycklar.

För att lära dig mer om putAll()metoden, besök Java HashMap putAll ().

Intressanta artiklar...