Java Map Merge - удобное слияние карт в Java
Java Map.merge() - это метод, который позволяет объединить два Map-объекта, используя заданную функцию слияния для обработки возможных конфликтов в значениях ключей.
Сигнатура метода выглядит следующим образом:
V merge(K key, V value, BiFunction super V,? super V,? extends V> remappingFunction)
- key: ключ для слияния
- value: значение, которое нужно добавить в Map
- remappingFunction: функция слияния, которая будет применена, если для данного ключа уже есть значение в Map
Результатом работы метода будет новое значение, которое будет связано с ключом key в Map: если значение уже было в Map, то оно будет заменено новым значением, полученным с помощью функции слияния; если значение не было в Map, то оно будет просто добавлено.
Пример использования метода merge():
java
import java.util.HashMap;
import java.util.Map;
public class MapMergeExample {
public static void main(String[] args) {
Map map1 = new HashMap<>();
map1.put("A", 1);
map1.put("B", 2);
Map map2 = new HashMap<>();
map2.put("B", 3);
map2.put("C", 4);
map1.forEach((key, value) -> map2.merge(key, value, (v1, v2) -> v1 + v2));
System.out.println(map2);
// Вывод: {A=1, B=5, C=4}
}
}
В данном примере у нас есть два Map-объекта, map1 и map2. Мы объединяем значения из map1 в map2 с помощью метода merge(). Если для ключа уже есть значение в map2, то мы применяем функцию слияния, которая складывает значения v1 и v2. В итоге получаем объединенный Map map2, где значение для ключа "B" стало равным 5 (2 + 3).
Метод merge() также может быть использован для добавления значения ключа, если его еще нет в Map:
java
import java.util.HashMap;
import java.util.Map;
public class MapMergeExample {
public static void main(String[] args) {
Map map = new HashMap<>();
map.put("A", 1);
map.merge("B", 2, (v1, v2) -> v1 + v2);
System.out.println(map);
// Вывод: {A=1, B=2}
}
}
В данном примере у нас есть Map map с одним элементом. Мы используем метод merge() для добавления нового значения для ключа "B". Функция слияния в этом случае не применяется, так как для ключа "B" не было значения в Map.
Таким образом, метод merge() позволяет контролировать процесс объединения двух Map-объектов, обрабатывая возможные конфликты в значениях ключей при помощи функции слияния.