Java HashMap apvienošana ()

Java HashMap sapludināšanas () metode ievieto norādīto atslēgu / vērtību kartēšanu hashmap, ja norādītās atslēgas jau nav.

Ja norādītā atslēga jau ir saistīta ar vērtību, metode veco vērtību aizstāj ar norādītās funkcijas rezultātu.

Metodes sintakse merge()ir šāda:

 hashmap.merge(key, value, remappingFunction)

Šeit hashmap ir HashMapklases objekts .

sapludināt () parametrus

merge()Metode aizņem 3 parametri:

  • atslēga - atslēga, ar kuru jāsaista norādītā vērtība
  • vērtība - vērtība, kas jāsaista ar atslēgu, ja atslēga jau ir saistīta ar kādu vērtību
  • remappingFunction - rezultāts, kas jāsaista ar atslēgu, ja atslēga jau ir saistīta ar vērtību

apvienot () atgriešanās vērtība

  • atgriež jauno vērtību, kas saistīta ar atslēgu
  • atgriež, nullja ar atslēgu nav saistīta vērtība

Piezīme . Ja rodas remappingFunction rezultāts null, norādītās atslēgas kartēšana tiek noņemta.

1. piemērs: HashMap sapludināšana (), lai ievietotu jaunu ierakstu

 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); ) )

Rezultāts

 HashMap: (Pant = 150, Bag = 300, Kurpes = 200) Krekla cena: 100 Atjaunināts HashMap: (Pant = 150, Krekls = 100, Bag = 300, Kurpes = 200)

Iepriekš minētajā piemērā mēs esam izveidojuši hashmap ar cenām. Ievērojiet izteicienu,

 prices.merge("Shirt", 100, (oldValue, newValue) -> oldValue + newValue)

Šeit mēs izmantojām lambda izteiksmi (oldValue, newValue) -> oldValue + newValue)kā pārkārtošanas funkciju. Lai uzzinātu vairāk par lambda izteiksmi, apmeklējiet Java Lambda izteiksmes.

Tā kā atslēgā Krekls nav cenas, merge()metode ievieto kartēšanu Shirt=100. Un atkārtotās funkcijas rezultāts tiek ignorēts.

2. piemērs: HashMap sapludināšana (), lai ievietotu ierakstu ar dublikāta atslēgu

 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); ) )

Rezultāts

 HashMap: (Madride = Spānija, Kanbera = Austrālija, Vašingtona = Amerika) Vašingtona: Amerika / ASV Atjaunināts HashMap: (Madride = Spānija, Kanbera = Austrālija, Vašingtona = Amerika / ASV), 

Iepriekš minētajā piemērā mēs esam izveidojuši hashmap nosaukto valstis. Ievērojiet izteicienu,

 countries.merge("Washington", "USA", (oldValue, newValue) -> oldValue + "/" + newValue)

Šeit mēs izmantojām lambda izteiksmi (oldValue, newValue) -> oldValue + "/" + newValue)kā atkārtotas veidošanas funkciju.

Tā kā atslēga Vašingtona jau atrodas valstīs, vecā vērtība tiek aizstāta ar vērtību, kas atgriezta, izmantojot pārkārtošanas funkciju. Tādējādi Vašingtonas kartēšana ietver vērtību Amerika / ASV.

3. piemērs: HashMap sapludināšana (), lai apvienotu divus 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); ) )

Rezultāts

 HashMap 1: (Pant = 230, Kurpes = 350) HashMap 2: (Krekls = 150, Kurpes = 320) Apvienotais HashMap: (Pant = 230, Krekls = 150, Kurpes = 320)

Iepriekš minētajā piemērā mēs esam izveidojuši divus hashmaps nosaukumus cenas1 un cenas2. Ievērojiet kodu,

  prices2.forEach((key, value) -> prices1.merge(key, value, (oldValue, newValue) -> ( if (oldValue < newValue) ( return oldValue; ) else ( return newValue; ) )));

Šeit HashMap forEach () metode piekļūst katram hashmap cenu2 ierakstam un apvieno to ar hashmap cenām1. Mēs izmantojām divus lambda izteicienus:

  • (atslēga, vērtība) -> cenas. apvienot (…) - Tas piekļūst katram cenu ierakstam1 un nodod to merge()metodei.
  • (oldValue, newValue) -> (…) - tā ir atkārtotas veidošanas funkcija. Tas salīdzina divas vērtības un atgriež mazāku vērtību.

Tā kā atslēga Kurpes atrodas abos hashmap, apavu vērtība tiek aizstāta ar atkārtotas veidošanas funkcijas rezultātu.

Java HashMap sapludināšana () Vs. putAll

Mēs varam arī izmantot putAll()metodi, lai apvienotu divus hashmaps. Tomēr, ja abos hashmaps ir atslēga, vecā vērtība tiek aizstāta ar jauno.

Atšķirībā no merge(), putAll()metode nenodrošina atkārtotas veidošanas funkciju. Tādējādi mēs nevaram izlemt, kādu vērtību glabāt atslēgu dublikātiem.

Lai uzzinātu vairāk par putAll()metodi, apmeklējiet Java HashMap putAll ().

Interesanti raksti...