Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvSpCoMg 218 of 322 menu
◀ ▶

Слияние значений в карте в Java

Метод merge на карте вставляет значение, если ключа не было, иначе передает старое и новое в функцию слияния. Так проще суммировать счетчики и собирать агрегаты без ручного get.

Родственный putIfAbsent кладет пару только при отсутствии ключа и возвращает уже лежащее значение или null. merge всегда участвует в решении, когда ключ занят.

Сумма заказов по клиенту при нескольких строках входа:

import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, Integer> totals = new HashMap<>(); record Line(String client, int sum) {} for (Line line : new Line[] { new Line("acme", 100), new Line("acme", 50), new Line("beta", 20) }) { totals.merge(line.client(), line.sum(), Integer::sum); } System.out.println(totals); } }

Для "acme" получится 150, для "beta" останется 20. Если функция слияния вернет null, пара удалится из карты:

import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, String> tags = new HashMap<>(); tags.put("id", "1"); tags.merge("id", "2", (oldVal, newVal) -> oldVal + "," + newVal); System.out.println(tags.get("id")); } }

Сложите три вставки одного ключа "x" со значениями 4, 6, 10 и выведите итог.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить