Spajanje Java HashMap-a ()

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 HashMapklase.

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 nullako 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 ().

Zanimljivi članci...