Metoda spajanja Java HashMap () ubacuje navedeno mapiranje ključa / vrijednosti u hashmapu ako navedeni ključ već nije prisutan.
Ako je navedeni ključ već pridružen vrijednosti, metoda zamjenjuje staru vrijednost rezultatom navedene funkcije.
Sintaksa merge()
metode je:
hashmap.merge(key, value, remappingFunction)
Ovdje je hashmap objekt HashMap
klase.
merge () Parametri
merge()
Postupak traje 3 parametara:
- key - ključ s kojim treba povezati navedenu vrijednost
- vrijednost - vrijednost koja se pridružuje ključu, ako je ključ već pridružen bilo kojoj vrijednosti
- remappingFunction - rezultat koji treba pridružiti ključu ako je ključ već pridružen vrijednosti
merge () Povratna vrijednost
- vraća novu vrijednost povezanu s ključem
- vraća
null
ako nijedna vrijednost nije pridružena ključu
Napomena : Ako rezultati remappingFunction rezultiraju null
, tada se mapiranje za navedeni ključ uklanja.
Primjer 1: HashMap spajanje () za umetanje novog unosa
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); ) )
Izlaz
HashMap: (Pant = 150, torba = 300, cipele = 200) Cijena majice: 100 Ažurirano HashMap: (Pant = 150, košulja = 100, torba = 300, cipele = 200)
U gornjem primjeru stvorili smo hashmapu s nazivom cijene. Primijetite izraz,
prices.merge("Shirt", 100, (oldValue, newValue) -> oldValue + newValue)
Ovdje smo koristili lambda izraz (oldValue, newValue) -> oldValue + newValue)
kao funkciju remapiranja. Da biste saznali više o lambda izrazu, posjetite Java Lambda Expressions.
Budući da ključ Shirt nije prisutan u cijenama, merge()
metoda ubacuje mapiranje Shirt=100
. Rezultat funkcije preslikavanja zanemaruje se.
Primjer 2: HashMap spajanje () za umetanje unosa s dupliciranim 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); ) )
Izlaz
HashMap: (Madrid = Španjolska, Canberra = Australija, Washington = Amerika) Washington: Amerika / SAD Ažurirano HashMap: (Madrid = Španjolska, Canberra = Australija, Washington = Amerika / SAD),
U gornjem primjeru stvorili smo hashmapu nazvanu zemlje. Primijetite izraz,
countries.merge("Washington", "USA", (oldValue, newValue) -> oldValue + "/" + newValue)
Ovdje smo koristili lambda izraz (oldValue, newValue) -> oldValue + "/" + newValue)
kao funkciju remapiranja.
Budući da je ključ Washington već prisutan u zemljama, stara vrijednost zamjenjuje se vrijednošću vraćenom funkcijom ponovnog mapiranja. Stoga mapiranje Washingtona uključuje vrijednost Amerika / SAD.
Primjer 3: HashMap merge () za spajanje dvije 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); ) )
Izlaz
HashMap 1: (Hlača = 230, Cipele = 350) HashMap 2: (Košulja = 150, Cipele = 320) Spojena HashMap: (Hlača = 230, Košulja = 150, Cipele = 320)
U gore navedenom primjeru stvorili smo dvije hash-mape nazvane cijena1 i cijene2. Primijetite kod,
prices2.forEach((key, value) -> prices1.merge(key, value, (oldValue, newValue) -> ( if (oldValue < newValue) ( return oldValue; ) else ( return newValue; ) )));
Ovdje metoda HashMap forEach () pristupa svakom unosu cijena hashmap2 i spaja ih s cijenama hashmap1. Upotrijebili smo dva lambda izraza:
- (ključ, vrijednost) -> prices.merge (…) - Pristupa svakom unosu cijena1 i prosljeđuje ga
merge()
metodi. - (oldValue, newValue) -> (…) - To je funkcija preslikavanja. Uspoređuje dvije vrijednosti i vraća manju vrijednost.
Budući da je ključ Shoes prisutan u oba hashmapa, vrijednost Shoes zamjenjuje se rezultatom funkcije preslikavanja.
Java HashMap spajanje () vs. staviSve
putAll()
Metodu također možemo koristiti za spajanje dviju hash-mapa. Međutim, ako je ključ prisutan u oba hashmapa, stara se vrijednost zamjenjuje novom.
Za razliku od merge()
, putAll()
metoda ne pruža funkciju remapiranja. Stoga ne možemo odlučiti koju ćemo vrijednost pohraniti za dvostruke ključeve.
Da biste saznali više o putAll()
metodi, posjetite Java HashMap putAll ().