Функция слияния в 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);
Третья функция переназначения используется при конфликте клавиш. Вот выдержка из документации:
Если указанный ключ еще не связан со значением или связан с нулем, связывает его с заданным ненулевым значением. В противном случае заменяет связанное значение результатами данной функции переназначения или удаляет, если результат равен нулю. Этот метод может быть полезен при объединении нескольких сопоставленных значений для ключа.