Java HashMap: метод merge()

Java HashMap Java HashMap

Метод merge() сначала проверяет, существует ли указанный ключ. Если он не существует, он добавляет пару ключ-значение в hashMap.

Синтаксис метода merge():

hashmap.merge(key, value, remappingFunction)

Примечание:hashmap — это объект класса HashMap.

Подробности параметра:

  • key - ключ
  • value - значение
  • remappingFunction — функция пересопоставления, используемая для пересчёта значения

Возвращаемое значение

Если значение, соответствующее ключу, не существует, возвращается значение; если оно существует, возвращается значение, пересчитанное с помощью remappingFunction.

Пример

Следующий пример демонстрирует использование метода merge():

Пример

import java.util.HashMap;

class Main {
    public static void main(String[] args) {
    // Создать HashMap
    HashMap<String, Integer> prices = new HashMap<>();

    // Вставка отображений в 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.out.println("Price of Shirt: " + returnedValue);

    // Вывести обновлённый HashMap
    System.out.println("Обновлённый HashMap: " + prices);
    }
}

Выполнение вышеуказанной программы дает следующий вывод:

HashMap: {Pant=150, Bag=300, Shoes=200}
Price of Shirt: 100
Updated HashMap: {Pant=150, Shirt=100, Bag=300, Shoes=200}

В приведённом выше примере мы создали HashMap с именем prices.

Обратите внимание на выражение:

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

В коде мы использовали анонимную функцию — лямбда-выражение (oldValue, newValue) -> oldValue newValue) в качестве remapping-функции.

Поскольку ключа Shirt нет в prices, метод merge() вставляет отображение Shirt=100 в prices, а результат выполнения remapping-функции игнорируется.

Чтобы узнать больше о лямбда-выражениях, посетитеЛямбда-выражения Java。

Метод merge() класса HashMap вставляет запись отображения с дублирующимся ключом:

Пример

import java.util.HashMap;

class Main {
    public static void main(String[] args) {
        // Создать HashMap
        HashMap<String, String> countries = new HashMap<>();

        // Вставить записи сопоставления в HashMap
        countries.put("Washington", "America");
        countries.put("Canberra", "Australia");
        countries.put("Madrid", "Spain");
        System.out.println("HashMap: " + countries);

        // Объединить сопоставление с ключом Washington
        String returnedValue = countries.merge("Washington", "USA", (oldValue, newValue) -> oldValue + "/" + newValue);
        System.out.println("Washington: " + returnedValue);

        // Вывести обновлённый HashMap
        System.out.println("Updated HashMap: " + countries);
    }
}

Выполнение вышеуказанной программы дает следующий вывод:

HashMap: {Madrid=Spain, Canberra=Australia, Washington=America}
Washington: America/USA
Updated HashMap: {Madrid=Spain, Canberra=Australia, Washington=America/USA},  

В приведённом выше примере мы создали HashMap с именем countries.

Обратите внимание на выражение:

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

Здесь мы использовали лямбда-выражение(oldValue, newValue) -> oldValue + "/" + newValue)в качестве функции переназначения.

Поскольку ключ washington уже существует в countries, старое значение заменяется значением, возвращаемым функцией переназначения. Следовательно, сопоставление для Washington содержит America/USA.

Java HashMap Java HashMap

Другие расширения