Метода спајања Јава ХасхМап () убацује наведено мапирање кључа / вредности у хеш-мапу ако наведени кључ већ није присутан.
Ако је наведени кључ већ придружен вредности, метод замењује стару вредност резултатом наведене функције.
Синтакса merge()
методе је:
hashmap.merge(key, value, remappingFunction)
Овде је хасхмап објекат HashMap
класе.
мерге () Параметри
merge()
Метод узима 3 параметре:
- кеи - кључ са којим треба повезати наведену вредност
- вредност - вредност која се придружује кључу, ако је кључ већ повезан са било којом вредношћу
- ремаппингФунцтион - резултат који треба придружити кључу ако је кључ већ придружен вредности
мерге () Повратна вредност
- враћа нову вредност повезану са кључем
- враћа
null
ако ниједна вредност није повезана са кључем
Напомена : Ако резултати ремаппингФунцтион резултирају null
, тада се мапирање за наведени кључ уклања.
Пример 1: ХасхМап мерге () за уметање новог уноса
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); ) )
Оутпут
ХасхМап: (панталона = 150, торба = 300, ципеле = 200) Цена мајице: 100 Ажурирано ХасхМап: (панталона = 150, кошуља = 100, торба = 300, ципеле = 200)
У горњем примеру смо креирали хеш-мапу названу цене. Примети израз,
prices.merge("Shirt", 100, (oldValue, newValue) -> oldValue + newValue)
Овде смо користили ламбда израз, (oldValue, newValue) -> oldValue + newValue)
као функцију ремапирања. Да бисте сазнали више о ламбда изразу, посетите Јава Ламбда Екпрессионс.
Будући да кључ Схирт није присутан у ценама, merge()
метода убацује мапирање Shirt=100
. И, резултат функције поновног мапирања се занемарује.
Пример 2: ХасхМап спајање () за уметање уноса са дупликатом кључа
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); ) )
Оутпут
ХасхМап: (Мадрид = Шпанија, Цанберра = Аустралија, Васхингтон = Америца) Вашингтон: Америца / УСА Ажурирано ХасхМап: (Мадрид = Шпанија, Цанберра = Аустралиа, Васхингтон = Америца / УСА),
У горњем примеру смо креирали хеш-мапу названу земље. Примети израз,
countries.merge("Washington", "USA", (oldValue, newValue) -> oldValue + "/" + newValue)
Овде смо користили ламбда израз, (oldValue, newValue) -> oldValue + "/" + newValue)
као функцију ремапирања.
Будући да је кључ Васхингтон већ присутан у земљама, стара вредност замењује се вредношћу враћеном функцијом поновног мапирања. Дакле, мапирање за Вашингтон укључује вредност Америка / САД.
Пример 3: ХасхМап мерге () за спајање две ХасхМапс
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); ) )
Оутпут
ХасхМап 1: (Панталоне = 230, Ципеле = 350) ХасхМап 2: (Кошуља = 150, Ципеле = 320) Спојени ХасхМап: (Панталоне = 230, Кошуља = 150, Ципеле = 320)
У горњем примеру смо креирали две хеш-мапе под називом цене1 и цене2. Обратите пажњу на код,
prices2.forEach((key, value) -> prices1.merge(key, value, (oldValue, newValue) -> ( if (oldValue < newValue) ( return oldValue; ) else ( return newValue; ) )));
Овде метода ХасхМап форЕацх () приступа сваком уносу цена хасхмап2 и спаја их са ценама хасхмап1. Користили смо два ламбда израза:
- (кључ, вредност) -> прицес.мерге (…) - Приступа сваком уносу цена1 и прослеђује га
merge()
методи. - (олдВалуе, невВалуе) -> (…) - То је функција пресликавања . Поређује две вредности и враћа мању вредност.
Будући да је кључ Схоес присутан у оба хасхмапа, вредност Схоес замењује се резултатом функције пресликавања.
Јава ХасхМап мерге () Вс. Стави све
putAll()
Методу такође можемо користити за спајање две хеш-мапе. Међутим, ако је кључ присутан у оба хешмапа, стара вредност се замењује новом.
За разлику од merge()
, putAll()
метода не пружа функцију ремапирања. Стога не можемо да одлучимо коју вредност ћемо сачувати за дупликате кључева.
Да бисте сазнали више о putAll()
методи, посетите Јава ХасхМап путАлл ().