Java HashMap egyesítés ()

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 HashMaposztá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, nullha 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.

érdekes cikkek...