Java HashMap flette ()

Java HashMap merge () -metoden setter inn den angitte nøkkel- / verdikartleggingen til hashmap hvis den angitte nøkkelen ikke allerede er til stede.

Hvis den angitte nøkkelen allerede er knyttet til en verdi, erstatter metoden den gamle verdien med resultatet av den angitte funksjonen.

Syntaksen til merge()metoden er:

 hashmap.merge(key, value, remappingFunction)

Her er hashmap et objekt i HashMapklassen.

merge () Parametere

Den merge()metoden tar 3 parametre:

  • nøkkel - nøkkel som den angitte verdien skal assosieres med
  • verdi - verdi som skal assosieres med nøkkel, hvis nøkkel allerede er knyttet til en hvilken som helst verdi
  • remappingFunction - resultat for å bli assosiert med nøkkel hvis nøkkel allerede er assosiert med en verdi

merge () Return Value

  • returnerer den nye verdien som er knyttet til nøkkelen
  • returnerer nullhvis ingen verdi er knyttet til nøkkelen

Merk : Hvis resultatene av remappingFunction blir fjernet null, blir kartleggingen for den angitte nøkkelen fjernet.

Eksempel 1: HashMap flette () for å sette inn ny oppføring

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

Produksjon

 HashMap: (Pant = 150, Bag = 300, Shoes = 200) Pris på skjorte: 100 Oppdatert HashMap: (Pant = 150, Shirt = 100, Bag = 300, Shoes = 200)

I eksemplet ovenfor har vi opprettet en hashmap som heter priser. Legg merke til uttrykket,

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

Her har vi brukt lambdauttrykket, (oldValue, newValue) -> oldValue + newValue)som remapping-funksjon. For å lære mer om lambdauttrykk, besøk Java Lambda Expressions.

Siden nøkkelskjorten ikke er til stede i priser, setter merge()metoden inn kartleggingen Shirt=100. Og resultatet fra remapping-funksjonen blir ignorert.

Eksempel 2: HashMap flette () for å sette inn oppføring med duplikatnøkkel

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

Produksjon

 HashMap: (Madrid = Spania, Canberra = Australia, Washington = Amerika) Washington: Amerika / USA Oppdatert HashMap: (Madrid = Spania, Canberra = Australia, Washington = Amerika / USA), 

I eksemplet ovenfor har vi opprettet en hashmap som heter land. Legg merke til uttrykket,

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

Her har vi brukt lambdauttrykket, (oldValue, newValue) -> oldValue + "/" + newValue)som remapping-funksjon.

Siden nøkkelen i Washington allerede er tilstede i land, erstattes den gamle verdien av verdien som returneres ved omleggingsfunksjon. Derfor inkluderer kartleggingen for Washington verdien Amerika / USA.

Eksempel 3: HashMap merge () for å slå sammen to 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); ) )

Produksjon

 HashMap 1: (Pant = 230, Shoes = 350) HashMap 2: (Shirt = 150, Shoes = 320) Fusjonert HashMap: (Pant = 230, Shirt = 150, Shoes = 320)

I eksemplet ovenfor har vi opprettet to hashmaps med navnene prices1 og prices2. Legg merke til koden,

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

Her får HashMap forEach () -metoden tilgang til hver oppføring av hashmap-prisene2 og slår den sammen med hashmap-prisene1. Vi har brukt to lambdauttrykk:

  • (nøkkel, verdi) -> priser.merge (…) - Den får tilgang til hver oppføring av priser1 og overfører den til merge()metoden.
  • (oldValue, newValue) -> (…) - Det er en omkartingsfunksjon. Den sammenligner to verdier og returnerer den mindre verdien.

Siden nøkkelen Sko er tilstede i begge hashmapene, erstattes verdien av Sko med resultatet av remapping-funksjonen.

Java HashMap fusjonere () vs. putt alle

Vi kan også bruke putAll()metoden til å slå sammen to hashmaps. Imidlertid, hvis en nøkkel er tilstede i begge hashmaps, blir den gamle verdien erstattet av den nye verdien.

I motsetning til merge(), putAll()gir ikke metoden remapping-funksjonen. Derfor kan vi ikke bestemme hvilken verdi som skal lagres for duplikatnøkler.

For å lære mer om putAll()metoden, besøk Java HashMap putAll ().

Interessante artikler...