Spajanje Java HashMap ()

Metoda spajanja Java HashMap () vstavi določeno preslikavo ključa / vrednosti v hashmap, če navedeni ključ že ni prisoten.

Če je navedeni ključ že povezan z vrednostjo, metoda nadomesti staro vrednost z rezultatom določene funkcije.

Sintaksa merge()metode je:

 hashmap.merge(key, value, remappingFunction)

Tu je hashmap predmet HashMaprazreda.

merge () Parametri

merge()Postopek traja 3 parametre:

  • key - ključ, s katerim bo povezana določena vrednost
  • vrednost - vrednost, ki jo je treba povezati s ključem, če je ključ že povezan s katero koli vrednostjo
  • remappingFunction - rezultat, ki ga je treba povezati s ključem, če je ključ že povezan z vrednostjo

merge () Vrnjena vrednost

  • vrne novo vrednost, povezano s ključem
  • vrne, nullče s ključem ni povezana nobena vrednost

Opomba : Če je rezultat remappingFunction rezultat null, se preslikava za navedeni ključ odstrani.

Primer 1: HashMap merge () za vstavljanje novega vnosa

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

Izhod

 HashMap: (Hlače = 150, Torba = 300, Čevlji = 200) Cena majice: 100 Posodobljeno HashMap: (Hlače = 150, Srajca = 100, Torba = 300, Čevlji = 200)

V zgornjem primeru smo ustvarili hashmap z imenom cene. Upoštevajte izraz,

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

Tu smo uporabili lambda izraz (oldValue, newValue) -> oldValue + newValue)kot funkcijo ponovnega preslikavanja. Če želite izvedeti več o lambda izrazu, obiščite Java Lambda Expressions.

Ker ključ Shirt ni prisoten v cenah, merge()metoda vstavi preslikavo Shirt=100. Rezultat funkcije preslikave se prezre.

Primer 2: HashMap merge () za vstavljanje vnosa s podvojenim ključem

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

Izhod

 HashMap: (Madrid = Španija, Canberra = Avstralija, Washington = Amerika) Washington: Amerika / ZDA Posodobljeno HashMap: (Madrid = Španija, Canberra = Avstralija, Washington = Amerika / ZDA), 

V zgornjem primeru smo ustvarili hashmap z imenom države. Upoštevajte izraz,

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

Tu smo uporabili lambda izraz (oldValue, newValue) -> oldValue + "/" + newValue)kot funkcijo ponovnega preslikavanja.

Ker je ključ Washington že prisoten v državah, se stara vrednost nadomesti z vrednostjo, ki jo vrne funkcija ponovnega preslikavanja. Zato preslikava Washingtona vključuje vrednost Amerika / ZDA.

Primer 3: HashMap merge () za spajanje dveh 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); ) )

Izhod

 HashMap 1: (Hlače = 230, Čevlji = 350) HashMap 2: (Srajca = 150, Čevlji = 320) Združeni HashMap: (Hlače = 230, Srajca = 150, Čevlji = 320)

V zgornjem primeru smo ustvarili dve hashmapi, imenovani prices1 in prices2. Upoštevajte kodo,

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

Tu metoda HashMap forEach () dostopa do vsakega vnosa cen hashmap2 in ga združi s cenami hashmap1. Uporabili smo dva lambda izraza:

  • (ključ, vrednost) -> prices.merge (…) - Dostopa do vsakega vnosa cen1 in ga posreduje merge()metodi.
  • (oldValue, newValue) -> (…) - To je funkcija preslikave. Primerja dve vrednosti in vrne manjšo vrednost.

Ker je ključ Shoes prisoten v obeh razpršilcih, se vrednost Shoes nadomesti z rezultatom funkcije preslikave.

Java HashMap merge () Vs. putAll

Z putAll()metodo lahko združimo tudi dve hashmapi. Če pa je ključ prisoten v obeh hashmapih, se stara vrednost nadomesti z novo vrednostjo.

Za razliko od merge()se putAll()metoda ne zagotavlja preslikavo funkcijo. Zato se ne moremo odločiti, katero vrednost bomo shranili za podvojene ključe.

Če želite izvedeti več o putAll()metodi, obiščite Java HashMap putAll ().

Zanimive Članki...