Јава ХасхМап спајање ()

Метода спајања Јава ХасхМап () убацује наведено мапирање кључа / вредности у хеш-мапу ако наведени кључ већ није присутан.

Ако је наведени кључ већ придружен вредности, метод замењује стару вредност резултатом наведене функције.

Синтакса 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()методи, посетите Јава ХасхМап путАлл ().

Занимљиви Чланци...