A Java HashMap merge () metódus beszúrja a megadott kulcs / érték leképezést a hashmap-ba, ha a megadott kulcs már nincs meg.
Ha a megadott kulcs már társítva van egy értékhez, akkor a módszer a régi értéket a megadott függvény eredményével helyettesíti.
A merge()
módszer szintaxisa :
hashmap.merge(key, value, remappingFunction)
Itt a hashmap az HashMap
osztály objektuma .
egyesítés () Paraméterek
A merge()
módszer 3 paramétert vesz fel:
- kulcs - kulcs, amelyhez a megadott értéket társítani kell
- érték - kulcshoz társítandó érték, ha a kulcs már társítva van valamilyen értékkel
- remappingFunction - a kulcshoz társítandó eredmény, ha a kulcs már társítva van egy értékhez
egyesítés () visszatérési érték
- a kulcshoz társított új értéket adja vissza
- visszatér,
null
ha a kulcshoz nincs társítva érték
Megjegyzés : Ha a remappingFunction eredményt ad null
, akkor a megadott kulcs hozzárendelése eltávolításra kerül.
1. példa: HashMap egyesítés () új bejegyzés beszúrásához
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); ) )
Kimenet
HashMap: (nadrág = 150, táska = 300, cipő = 200) az ing ára: 100 frissített HashMap: (nadrág = 150, ing = 100, táska = 300, cipő = 200)
A fenti példában létrehoztunk egy hashmap nevű árakat. Figyelje meg a kifejezést,
prices.merge("Shirt", 100, (oldValue, newValue) -> oldValue + newValue)
Itt a lambda kifejezést alkalmaztuk (oldValue, newValue) -> oldValue + newValue)
újrarendezési funkcióként. Ha többet szeretne megtudni a lambda kifejezésről, látogasson el a Java Lambda Expressions oldalra.
Mivel a Shirt kulcs nem szerepel az árakban, a merge()
módszer beilleszti a leképezést Shirt=100
. És az újratervezési funkció eredményét figyelmen kívül hagyják.
2. példa: HashMap merge () bejegyzés beillesztéséhez duplikált kulccsal
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); ) )
Kimenet
HashMap: (Madrid = Spanyolország, Canberra = Ausztrália, Washington = Amerika) Washington: Amerika / USA Frissítve HashMap: (Madrid = Spanyolország, Canberra = Ausztrália, Washington = Amerika / USA),
A fenti példában létrehoztunk egy hashmap nevű országot. Figyelje meg a kifejezést,
countries.merge("Washington", "USA", (oldValue, newValue) -> oldValue + "/" + newValue)
Itt a lambda kifejezést alkalmaztuk (oldValue, newValue) -> oldValue + "/" + newValue)
újrarendezési funkcióként.
Mivel a kulcs Washington már jelen van az országokban, a régi értéket felváltja az újratervezési függvény által visszaadott érték. Ennélfogva a Washington feltérképezése magában foglalja az Amerika / USA értéket.
3. példa: HashMap merge () két HashMaps egyesítéséhez
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); ) )
Kimenet
HashMap 1: (nadrág = 230, cipő = 350) HashMap 2: (ing = 150, cipő = 320) egyesített hashap térkép: (nadrág = 230, ing = 150, cipő = 320)
A fenti példában két hasmaps-ot hoztunk létre, amelyek neve árak1 és árak2. Figyelje meg a kódot,
prices2.forEach((key, value) -> prices1.merge(key, value, (oldValue, newValue) -> ( if (oldValue < newValue) ( return oldValue; ) else ( return newValue; ) )));
Itt a HashMap forEach () metódus hozzáfér a hashmap árak2 minden bejegyzéséhez, és összevonja a hashmap árak1-be. Két lambda kifejezést használtunk:
- (kulcs, érték) -> árak.egyesítés (…) - Hozzáfér az árak minden bejegyzéséhez1, és átadja a
merge()
módszernek. - (oldValue, newValue) -> (…) - Ez egy újratervező függvény. Két értéket hasonlít össze, és a kisebb értéket adja vissza.
Mivel a Cipő kulcs mind a hashmap-ban megtalálható, a Cipő értéke helyébe az újrarendező funkció eredménye lép.
Java HashMap egyesítés () Vs. putAll
putAll()
Két metszet összevonására is használhatjuk a módszert. Ha azonban mindkét kulcsban van kulcs, akkor a régi értéket az új érték váltja fel.
Ellentétben a merge()
, a putAll()
módszer nem nyújt a leképezési függvény. Ezért nem tudjuk eldönteni, hogy milyen értéket tároljunk a duplikált kulcsok számára.
Ha többet szeretne megtudni a putAll()
módszerről, látogasson el a Java HashMap putAll () oldalra.