Metóda zlúčenia () Java HashMap vloží zadané mapovanie kľúča / hodnoty do hashmapy, ak zadaný kľúč už nie je prítomný.
Ak je zadaný kľúč už priradený k hodnote, metóda nahradí starú hodnotu výsledkom zadanej funkcie.
Syntax merge()
metódy je:
hashmap.merge(key, value, remappingFunction)
Tu je hashmap objektom HashMap
triedy.
merge () parametre
merge()
Metóda trvá 3 parametre:
- kľúč - kľúč, s ktorým má byť spojená zadaná hodnota
- hodnota - hodnota, ktorá sa má priradiť ku kľúču, ak je kľúč už priradený k akejkoľvek hodnote
- remappingFunction - výsledok, ktorý sa má spojiť s kľúčom, ak je kľúč už spojený s hodnotou
merge () návratová hodnota
- vráti novú hodnotu spojenú s kľúčom
- vráti,
null
ak s kľúčom nie je spojená žiadna hodnota
Poznámka : Ak bude výsledkom remappingFunction null
, mapovanie pre zadaný kľúč sa odstráni.
Príklad 1: HashMap merge () na vloženie nového záznamu
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); ) )
Výkon
HashMap: (nohavice = 150, taška = 300, topánky = 200) Cena košele: 100 Aktualizovaná HashMap: (nohavice = 150, košeľa = 100, taška = 300, topánky = 200)
Vo vyššie uvedenom príklade sme vytvorili hashmapu s názvom ceny. Všimnite si výraz,
prices.merge("Shirt", 100, (oldValue, newValue) -> oldValue + newValue)
Tu sme použili funkciu lambda (oldValue, newValue) -> oldValue + newValue)
ako funkciu premapovania. Ak sa chcete dozvedieť viac informácií o výraze lambda, navštívte výraz Java Lambda Expressions.
Pretože kľúčová košeľa nie je uvedená v cenách, merge()
metóda vloží mapovanie Shirt=100
. A výsledok funkcie premapovania je ignorovaný.
Príklad 2: HashMap merge () na vloženie záznamu s duplicitným kľúčom
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); ) )
Výkon
HashMap: (Madrid = Španielsko, Canberra = Austrália, Washington = Amerika) Washington: Amerika / USA Aktualizovaná HashMap: (Madrid = Španielsko, Canberra = Austrália, Washington = Amerika / USA),
Vo vyššie uvedenom príklade sme vytvorili hashmapu s názvom krajiny. Všimnite si výraz,
countries.merge("Washington", "USA", (oldValue, newValue) -> oldValue + "/" + newValue)
Tu sme použili funkciu lambda (oldValue, newValue) -> oldValue + "/" + newValue)
ako funkciu premapovania.
Pretože kľúčový Washington je už v krajinách k dispozícii, stará hodnota sa nahradí hodnotou vrátenou funkciou premapovania. Mapovanie pre Washington preto zahŕňa hodnotu Amerika / USA.
Príklad 3: HashMap merge () na zlúčenie dvoch 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); ) )
Výkon
HashMap 1: (nohavice = 230, topánky = 350) HashMap 2: (tričko = 150, topánky = 320) Zlúčená mapa HashMap: (nohavice = 230, košeľa = 150, topánky = 320)
Vo vyššie uvedenom príklade sme vytvorili dva hashmapy pomenované ceny1 a ceny2. Všimnite si kód,
prices2.forEach((key, value) -> prices1.merge(key, value, (oldValue, newValue) -> ( if (oldValue < newValue) ( return oldValue; ) else ( return newValue; ) )));
Metóda HashMap forEach () tu pristupuje ku každej položke cien hashmap2 a spája ju s cenami hashmap1. Použili sme dva výrazy lambda:
- (kľúč, hodnota) -> prices.merge (…) - pristupuje ku každému záznamu cien1 a odovzdáva ho
merge()
metóde. - (oldValue, newValue) -> (…) - je to funkcia premapovania. Porovná dve hodnoty a vráti menšiu hodnotu.
Pretože kľúč Obuv je prítomný v obidvoch hashmapách, hodnota Obuv je nahradená výsledkom funkcie premapovania.
Zlúčenie Java HashMap () vs. putAll
putAll()
Metódu môžeme tiež použiť na zlúčenie dvoch hashmap. Ak je však kľúč prítomný v oboch hashmapách, stará hodnota sa nahradí novou hodnotou.
Na rozdiel od merge()
tejto putAll()
metódy metóda neposkytuje funkciu premapovania. Preto nemôžeme rozhodnúť, akú hodnotu máme uložiť pre duplicitné kľúče.
Ak sa chcete o tejto putAll()
metóde dozvedieť viac , navštívte Java HashMap putAll ().