SS'*_*SS' 3 java hashmap concurrenthashmap java-8 bifunctor
有关于 ConcurrentHashMaps 的合并功能的问题。函数式编程新手,所以不确定我是否正确使用它。
map.merge(consumer, val, (a, b) -> (a.date().compareTo(b.date())) >= 0 ? a : b);
Run Code Online (Sandbox Code Playgroud)
如果我正确地推理出它应该做的事情就是insert (consumer, val)在没有现有条目的情况下将其放入表中。如果有,那么它应该比较 a 和 b 的日期(表中的值和我的 val)。如果“val”大于表中的条目,则应将其替换为该条目。否则,坚持使用现有条目。
感谢任何帮助。谢谢!
这是一个例子,
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "one");
map.put(2, "two");
map.merge(1, "newOne", (v1, v2) -> v1 + ", " + v2);
Run Code Online (Sandbox Code Playgroud)
当存在按键冲突时使用第三个重新映射功能。以下是文档的摘录:
如果指定的键尚未与值关联或与 null 关联,则将其与给定的非 null 值关联。否则,用给定重映射函数的结果替换关联值,或者如果结果为空则删除。当组合一个键的多个映射值时,可以使用此方法。
| 归档时间: |
|
| 查看次数: |
3823 次 |
| 最近记录: |