Java HashMap merge () -menetelmä lisää määritetyn avaimen / arvon yhdistämisen hashmapiin, jos määritettyä avainta ei jo ole.
Jos määritetty avain on jo liitetty arvoon, menetelmä korvaa vanhan arvon määritetyn funktion tuloksella.
Menetelmän syntaksi merge()
on:
hashmap.merge(key, value, remappingFunction)
Tässä hashmap on HashMap
luokan kohde.
yhdistää () parametrit
merge()
Menetelmä kestää 3 parametrit:
- avain - avain, johon määritetty arvo liitetään
- arvo - avaimelle liitettävä arvo, jos avain on jo liitetty mihin tahansa arvoon
- remappingFunction - tulos liitetään avaimeen, jos avain on jo liitetty arvoon
yhdistää () palautusarvo
- palauttaa avaimeen liittyvän uuden arvon
- palauttaa,
null
jos avaimeen ei liity arvoa
Huomaa : Jos remappingFunction johtaa null
, määritetyn avaimen kartoitus poistetaan.
Esimerkki 1: HashMap-yhdistäminen () uuden merkinnän lisäämiseksi
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); ) )
Tuotos
HashMap: (housut = 150, laukku = 300, kengät = 200) paidan hinta: 100 päivitetty HashMap: (housut = 150, paita = 100, laukku = 300, kengät = 200)
Yllä olevassa esimerkissä olemme luoneet hashmap-nimisen hinnan. Huomaa ilmaisu,
prices.merge("Shirt", 100, (oldValue, newValue) -> oldValue + newValue)
Tässä olemme käyttäneet lambda-lauseketta (oldValue, newValue) -> oldValue + newValue)
uudelleenmuodostustoimintona. Lisätietoja lambda-lausekkeista on Java Lambda -lausekkeissa.
Koska avainpaitaa ei ole hinnoissa, merge()
menetelmä lisää kartoituksen Shirt=100
. Ja uudelleenmäärittelytoiminnon tulos jätetään huomioimatta.
Esimerkki 2: HashMap-yhdistäminen () merkinnän lisäämiseen kaksoiskoodiavaimella
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); ) )
Tuotos
HashMap: (Madrid = Espanja, Canberra = Australia, Washington = Amerikka) Washington: Amerikka / USA Päivitetty HashMap: (Madrid = Espanja, Canberra = Australia, Washington = Amerikka / USA),
Yllä olevassa esimerkissä olemme luoneet hashmap-nimetyt maat. Huomaa ilmaisu,
countries.merge("Washington", "USA", (oldValue, newValue) -> oldValue + "/" + newValue)
Tässä olemme käyttäneet lambda-lauseketta (oldValue, newValue) -> oldValue + "/" + newValue)
uudelleenmuodostustoimintona.
Koska avain Washington on jo maissa, vanha arvo korvataan uudelleensuunnittelutoiminnon palauttamalla arvolla. Washingtonin kartoitus sisältää siis arvoa Amerikka / USA.
Esimerkki 3: HashMap merge () yhdistää kaksi HashMapia
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); ) )
Tuotos
HashMap 1: (Housut = 230, Kengät = 350) HashMap 2: (Paita = 150, Kengät = 320) Yhdistetyt HashMap: (Housut = 230, Paita = 150, Kengät = 320)
Yllä olevassa esimerkissä olemme luoneet kaksi hashappia nimeltä hinnat1 ja hinnat2. Huomaa koodi,
prices2.forEach((key, value) -> prices1.merge(key, value, (oldValue, newValue) -> ( if (oldValue < newValue) ( return oldValue; ) else ( return newValue; ) )));
Tässä HashMap forEach () -menetelmä käyttää kutakin hashmap-hintojen2 merkintää ja yhdistää sen hashmap-hintoihin1. Olemme käyttäneet kahta lambda-lauseketta:
- (avain, arvo) -> prices.merge (…) - Se käyttää jokaista hintojen syöttöä1 ja siirtää sen
merge()
menetelmään. - (oldValue, newValue) -> (…) - Se on uudelleenmuodostustoiminto. Se vertaa kahta arvoa ja palauttaa pienemmän arvon.
Koska avain Kengät on läsnä molemmissa hashmapissa, kengän arvo korvataan uudelleensuunnittelutoiminnon tuloksella.
Java HashMap -yhdistelmä () vs. laita kaikki
Voimme myös käyttää putAll()
menetelmää kahden hashapin yhdistämiseen. Jos avain on kuitenkin molemmissa hashmapsissa, vanha arvo korvataan uudella.
Toisin kuin merge()
, putAll()
menetelmä ei tarjoa uudelleenkäynnistystoimintoa. Siksi emme voi päättää, mikä arvo tallennetaan kaksoisavaimille.
Lisätietoja putAll()
menetelmästä on Java HashMap putAll () -sivulla.