„Java HashMap“ sujungimas ()

„Java HashMap Merge ()“ metodas įterpia nurodytą rakto / vertės susiejimą į „hashmap“, jei nurodyto rakto jau nėra.

Jei nurodytas raktas jau susietas su reikšme, metodas pakeičia senąją reikšmę nurodytos funkcijos rezultatu.

merge()Metodo sintaksė yra tokia:

 hashmap.merge(key, value, remappingFunction)

Čia hashmap yra klasės objektas HashMap.

sulieti () parametrai

merge()Metodas trunka 3 parametrus:

  • raktas - raktas, su kuriuo turi būti susieta nurodyta reikšmė
  • reikšmė - reikšmė, susieta su raktu, jei raktas jau susietas su kokia nors verte
  • remappingFunction - rezultatas turi būti susietas su raktu, jei raktas jau susietas su reikšme

sulieti () grąžinimo vertė

  • grąžina naują reikšmę, susietą su raktu
  • grąžinama, nulljei nėra jokios vertės, susijusios su raktu

Pastaba : Jei gaunama „remappingFunction“ funkcija null, nurodyto rakto susiejimas pašalinamas.

1 pavyzdys: „HashMap“ sujungimas () įterpti naują įrašą

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

Rezultatas

 „HashMap“: (kelnaitės = 150, krepšys = 300, batai = 200) marškinėlių kaina: 100 atnaujinta „HashMap“: (kelnaitės = 150, marškiniai = 100, krepšys = 300, batai = 200)

Ankstesniame pavyzdyje mes sukūrėme hashmap pavadinimu kainos. Atkreipkite dėmesį į išraišką,

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

Čia mes naudojome lambda išraišką (oldValue, newValue) -> oldValue + newValue)kaip pakartojimo funkciją. Norėdami sužinoti daugiau apie lambda išraišką, apsilankykite „Java Lambda Expressions“.

Kadangi kainų nėra pagrindinio marškinėlio, merge()metodas įterpia žemėlapį Shirt=100. Ir nepaisoma pertvarkymo funkcijos rezultato.

2 pavyzdys: „HashMap“ sujungimas () įterpti įrašą su pasikartojančiu raktu

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

Rezultatas

 „HashMap“: (Madridas = Ispanija, Kanbera = Australija, Vašingtonas = Amerika) Vašingtonas: Amerika / JAV Atnaujinta „HashMap“: (Madridas = Ispanija, Kanbera = Australija, Vašingtonas = Amerika / JAV), 

Ankstesniame pavyzdyje mes sukūrėme hashmap pavadinimu šalys. Atkreipkite dėmesį į išraišką,

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

Čia mes naudojome lambda išraišką (oldValue, newValue) -> oldValue + "/" + newValue)kaip pakartojimo funkciją.

Kadangi raktas Vašingtonas jau yra šalyse, senoji reikšmė pakeičiama verte, kurią grąžina funkcija perrašyti. Taigi, Vašingtono žemėlapis apima vertę Amerika / JAV.

3 pavyzdys: „HashMap Merge“ () sujungia du „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); ) )

Rezultatas

 1 „HashMap“: (Kelnaitės = 230, Avalynė = 350)

Ankstesniame pavyzdyje mes sukūrėme du maišymo takelius, pavadintus kainos1 ir kainos2. Atkreipkite dėmesį į kodą,

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

Čia „HashMap forEach“ () metodas pasiekia kiekvieną „hashmap“ kainos įrašą2 ir sujungia jį su „hashmap“ kainomis1. Mes panaudojome du lambda posakius:

  • (raktas, vertė) -> kainos. sujungti (…) - Jis pasiekia kiekvieną kainų įrašą1 ir perduoda merge()metodui.
  • (oldValue, newValue) -> (…) - tai pakartotinio nustatymo funkcija. Jis lygina dvi reikšmes ir pateikia mažesnę vertę.

Kadangi raktas „Batai“ yra abiejuose „hashmap“ planšetiniuose kompiuteriuose, batų vertė pakeičiama perrašymo funkcijos rezultatu.

„Java HashMap“ sujungti (), palyginti su putAll

Mes taip pat galime naudoti putAll()metodą sujungti du hashapus. Tačiau jei raktas yra abiejuose „hashmaps“, senoji reikšmė pakeičiama nauja.

Skirtingai nuo merge(), putAll()metodas nepateikia pakartojimo funkcijos. Taigi mes negalime nuspręsti, kokią vertę saugoti pasikartojantiems raktams.

Norėdami sužinoti daugiau apie putAll()metodą, apsilankykite „Java HashMap putAll“ ().

Įdomios straipsniai...