Java HashMapi ühendamine ()

Java HashMapi ühendamise () meetod lisab määratud võtme / väärtuse vastendamise hashmapile, kui määratud võtit juba pole.

Kui määratud võti on juba väärtusega seotud, asendab meetod vana väärtuse määratud funktsiooni tulemusega.

Meetodi süntaks merge()on:

 hashmap.merge(key, value, remappingFunction)

Siin on hashmap HashMapklassi objekt .

ühenda () parameetrid

merge()Meetod võtab 3 parameters:

  • võti - võti, millega määratud väärtus seostatakse
  • väärtus - võti seostatav väärtus, kui võti on juba mõne väärtusega seotud
  • remappingFunction - tulemus seostatakse võtmega, kui võti on juba väärtusega seotud

liitma () tagastusväärtus

  • tagastab võtmega seotud uue väärtuse
  • tagastatakse, nullkui võtmega pole seotud väärtust

Märkus . Kui tulemuseks on funktsiooni remappingFunction null, eemaldatakse määratud võtme vastendamine .

Näide 1: HashMapi liitmine () uue kirje lisamiseks

 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äljund

 HashMap: (Pant = 150, kott = 300, kingad = 200) Särgi hind: 100 uuendatud HashMap: (Pant = 150, särk = 100, kott = 300, kingad = 200)

Ülaltoodud näites oleme loonud hashmapi nimega hinnad. Pange tähele väljendit

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

Siin oleme (oldValue, newValue) -> oldValue + newValue)ümberarvestusfunktsioonina kasutanud lambda väljendit . Lambda väljenduse kohta lisateabe saamiseks külastage Java Lambda väljendeid.

Kuna võtmesärki hindades ei esine, merge()lisab meetod kaardistamise Shirt=100. Ja ümbersõnastamise funktsiooni tulemust ignoreeritakse.

Näide 2: HashMap-i ühendamine () duplikaatvõtmega sisestuse sisestamiseks

 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äljund

 HashMap: (Madrid = Hispaania, Canberra = Austraalia, Washington = Ameerika) Washington: Ameerika / USA Uuendatud HashMap: (Madrid = Hispaania, Canberra = Austraalia, Washington = Ameerika / USA), 

Ülaltoodud näites oleme loonud hashmapi nimega riigid. Pange tähele väljendit

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

Siin oleme (oldValue, newValue) -> oldValue + "/" + newValue)ümberarvestusfunktsioonina kasutanud lambda väljendit .

Kuna võti Washington on riikides juba olemas, asendatakse vana väärtus väärtusega, mille tagastab funktsiooni ümberkujundamine. Seega hõlmab Washingtoni kaardistamine väärtust Ameerika / USA.

Näide 3: HashMapi ühendamine () kahe HashMapi ühendamiseks

 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äljund

 HashMap 1: (Pant = 230, Kingad = 350) HashMap 2: (Särk = 150, Shoes = 320) Ühendatud HashMap: (Pant = 230, Särk = 150, Kingad = 320)

Ülaltoodud näites oleme loonud kaks hashmi nimega hinnad1 ja hinnad2. Pange tähele koodi,

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

Siin pääseb meetod HashMap forEach () igale hashmap-hindade kirjele2 ja ühendab selle hashmap-hindadega1. Oleme kasutanud kahte lambda väljendit:

  • (võti, väärtus) -> prices.merge (…) - see pääseb juurde igale hinnakirjele1 ja edastab selle merge()meetodile.
  • (oldValue, newValue) -> (…) - see on ümberarvestusfunktsioon . See võrdleb kahte väärtust ja tagastab väiksema väärtuse.

Kuna võti Kingad on olemas mõlemas räpakaardis, asendatakse kingade väärtus ümbermõõtmise funktsiooni tulemusega.

Java HashMapi ühendamine () vs. putAll

Samuti võime putAll()meetodit kasutada kahe hashapi ühendamiseks. Kui aga võti on olemas mõlemas hashmapis, asendatakse vana väärtus uue väärtusega.

Erinevalt merge()on putAll()meetod ei anna remappimine funktsiooni. Seetõttu ei saa me otsustada, millist väärtust duplikaatide võtmete jaoks salvestada.

putAll()Meetodi kohta lisateabe saamiseks külastage Java HashMapi putAll ().

Huvitavad Artiklid...