回答了有关ConcurrentHashMaps合并功能的问题。函数编程的新手,所以不确定是否可以正确使用它。
map.merge(consumer, val, (a, b) -> (a.date().compareTo(b.date())) >= 0 ? a : b);
如果我没有正确地推理出该怎么办,应该在没有现有条目的情况下将insert (consumer, val)
插入表中。如果存在,则应比较a和b的日期(表中的值和我的val)。如果“ val”大于表中的条目,则应将其替换为该表中的条目。否则,请保留现有条目。
感谢任何帮助。谢谢!
答案 0 :(得分: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);
当存在键冲突时,将使用第三个重新映射功能。这是文档摘录:
如果指定的键尚未与值关联或已 与null关联,将其与给定的非null值关联。 否则,用给定的结果替换关联的值 重映射函数;如果结果为null,则将其删除。这种方法可能 在组合键的多个映射值时很有用。