Metoda Java HashMap merge () inserează maparea cheii / valorilor specificate în hashmap dacă cheia specificată nu este deja prezentă.
Dacă cheia specificată este deja asociată cu o valoare, metoda înlocuiește vechea valoare cu rezultatul funcției specificate.
Sintaxa merge()
metodei este:
hashmap.merge(key, value, remappingFunction)
Aici, hashmap este un obiect al HashMap
clasei.
merge () Parametri
merge()
Metoda ia 3 parametri:
- cheie - cheie cu care trebuie asociată valoarea specificată
- valoare - valoare care trebuie asociată cu cheia, dacă cheia este deja asociată cu orice valoare
- remappingFunction - rezultatul trebuie asociat cu cheia dacă cheia este deja asociată cu o valoare
merge () Valoare returnată
- returnează noua valoare asociată cheii
- returnează
null
dacă nu există nici o valoare asociată cu cheia
Notă : Dacă rezultă null
funcția remappingFunction , atunci maparea pentru cheia specificată este eliminată.
Exemplul 1: HashMap merge () la Insert New Entry
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); ) )
Ieșire
HashMap: (Pant = 150, Bag = 300, Pantofi = 200) Prețul cămășii: 100 HashMap actualizat: (Pant = 150, Shirt = 100, Bag = 300, Pantofi = 200)
În exemplul de mai sus, am creat un hashmap denumit prețuri. Observați expresia,
prices.merge("Shirt", 100, (oldValue, newValue) -> oldValue + newValue)
Aici, am folosit expresia lambda, (oldValue, newValue) -> oldValue + newValue)
ca funcție de remapare. Pentru a afla mai multe despre expresia lambda, vizitați Java Lambda Expressions.
Deoarece cheia Cămașă nu este prezentă în prețuri, merge()
metoda introduce cartografierea Shirt=100
. Și rezultatul funcției de remapare este ignorat.
Exemplul 2: HashMap merge () pentru a insera intrarea cu cheie duplicat
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); ) )
Ieșire
HashMap: (Madrid = Spania, Canberra = Australia, Washington = America) Washington: America / SUA Actualizat HashMap: (Madrid = Spania, Canberra = Australia, Washington = America / SUA),
În exemplul de mai sus, am creat un hashmap numit țări. Observați expresia,
countries.merge("Washington", "USA", (oldValue, newValue) -> oldValue + "/" + newValue)
Aici, am folosit expresia lambda, (oldValue, newValue) -> oldValue + "/" + newValue)
ca funcție de remapare.
Deoarece cheia Washington este deja prezentă în țări, vechea valoare este înlocuită de valoarea returnată prin funcția de remapare. Prin urmare, cartografierea pentru Washington include valoare America / SUA.
Exemplul 3: HashMap merge () pentru a îmbina două HashMap-uri
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); ) )
Ieșire
HashMap 1: (Pant = 230, Pantofi = 350) HashMap 2: (Cămașă = 150, Pantofi = 320) HashMap combinat: (Pant = 230, Cămașă = 150, Pantofi = 320)
În exemplul de mai sus, am creat două hashmap-uri denumite prețuri1 și prețuri2. Observați codul,
prices2.forEach((key, value) -> prices1.merge(key, value, (oldValue, newValue) -> ( if (oldValue < newValue) ( return oldValue; ) else ( return newValue; ) )));
Aici, metoda HashMap forEach () accesează fiecare intrare a prețurilor hashmap2 și o combină cu prețurile hashmap1. Am folosit două expresii lambda:
- (cheie, valoare) -> prices.merge (…) - Accesează fiecare intrare de prețuri1 și o transmite
merge()
metodei. - (OldValue, newValue) -> (…) - Este o funcție de remapare. Compară două valori și returnează valoarea mai mică.
Deoarece pantofii cheie sunt prezenți atât în hashmap, valoarea pantofilor este înlocuită de rezultatul funcției de remapare.
Java HashMap merge () vs. pune tot
Putem folosi și putAll()
metoda pentru a îmbina două hashmap-uri. Cu toate acestea, dacă o cheie este prezentă în ambele hashmap-uri, vechea valoare este înlocuită cu noua valoare.
Spre deosebire de merge()
, putAll()
metoda nu oferă funcția de remapare. Prin urmare, nu putem decide ce valoare să stocăm pentru cheile duplicate.
Pentru a afla mai multe despre putAll()
metodă, vizitați Java HashMap putAll ().