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 HashMap
razreda.
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 ().