我想要:
我想出了下面的代码,但正确的是它有(而且),它看起来很可怕:)
我想和你们一起检查一下.你认为它有效吗?
// Input: map, k, t
while (true) {
if (map.containsKey(k)) {
current = map.get(k);
if (current != null && current < t) {
if (map.replace(k, current, t))
break;
} else if (current != null && current >= t) {
break;
}
} else {
pre = map.putIfAbsent(k, t);
if (pre == null)
break;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Java 8,则可以使用该merge方法.它需要:
BiFunction<K,K,V>结合在K的v任何已经存在的值,并将其存储˚F对于您的用例,您将拥有:
如果K上还没有值,它只会存储V.否则,它会将新的V和旧的V传递给你的函数,并将结果存储在K.因为你的函数返回两者中的较高者,如果它高于前一个值,则相当于替换该值.
| 归档时间: |
|
| 查看次数: |
772 次 |
| 最近记录: |