我想:
我提出了以下代码,但是正确的时候它是真的(真的),它对我来说很可怕:)
我想和你们一起检查一下。你觉得它有效吗?
// 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;
}
}
答案 0 :(得分:5)
如果您使用的是Java 8,则可以使用merge
方法。需要:
BiFunction<K,K,V>
F,它将任何已存在的值与V组合,并将其存储在K 对于您的用例,您将拥有:
如果K上没有值,它只会存储V.否则,它会将新的V和旧的V传递给你的函数,并将结果存储在K.因为你的函数返回更高的值如果它高于前一个值,则相当于替换值。