Java HashMap: метод merge()
Метод merge() сначала проверяет, существует ли указанный ключ. Если он не существует, он добавляет пару ключ-значение в hashMap.
Синтаксис метода merge():
hashmap.merge(key, value, remappingFunction)
Примечание:hashmap — это объект класса HashMap.
Подробности параметра:
- key - ключ
- value - значение
- remappingFunction — функция пересопоставления, используемая для пересчёта значения
Возвращаемое значение
Если значение, соответствующее ключу, не существует, возвращается значение; если оно существует, возвращается значение, пересчитанное с помощью remappingFunction.
Пример
Следующий пример демонстрирует использование метода merge():
Пример
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 вставляет запись отображения с дублирующимся ключом:
Пример
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