Функция слияния в ConcurrentHashMap

Есть вопрос о функции слияния с ConcurrentHashMaps. Новичок в функциональном программировании, поэтому не уверен, правильно ли я его использую.

https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentHashMap.html

map.merge(consumer, val, (a, b) -> (a.date().compareTo(b.date())) >= 0 ? a : b);

Что я должен делать, если я правильно понял это insert (consumer, val) в таблицу, если нет существующей записи. Если есть, то следует сравнить даты a и b (значение в таблице и мой val). Если "val" больше, чем запись в таблице, она должна заменить ее на эту. В противном случае придерживайтесь существующей записи.

Ценю любую помощь. Спасибо!

1 ответ

Вот один пример,

Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "one");
map.put(2, "two");

map.merge(1, "newOne", (v1, v2) -> v1 + ", " + v2);

Третья функция переназначения используется при конфликте клавиш. Вот выдержка из документации:

Если указанный ключ еще не связан со значением или связан с нулем, связывает его с заданным ненулевым значением. В противном случае заменяет связанное значение результатами данной функции переназначения или удаляет, если результат равен нулю. Этот метод может быть полезен при объединении нескольких сопоставленных значений для ключа.

Другие вопросы по тегам