Combinarea Java HashMap ()

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 HashMapclasei.

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ă nulldacă nu există nici o valoare asociată cu cheia

Notă : Dacă rezultă nullfuncț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 ().

Articole interesante...