java计算如果存在映射
import java.util.Map;
public class Example {
private static Map<String, Integer> map = Map.of("Ciao", 5, "Luca", 10, "Marco", 50);
private static final String NEW_KEY = "New key";
public static void main(final String[] args) {
map.computeIfPresent("Ciao", (k, v) -> {
map.remove("Ciao");
map.put(NEW_KEY, 10);
return v;
});
}
}
当我不想返回v时,为什么我必须在computefpresent中返回v?如果不使用k和v,我可以不通过它们吗
# 1 楼答案
您没有按预期使用
computeIfPresent
,并且(在没有测试的情况下)您的代码很可能无法工作。特别地,Javadoc声明Map
应该而不是在回调函数中被修改。如果要用另一个键/值对替换一个键/值,则应使用if
:# 2 楼答案
computeIfPresent
用于处理同一密钥的冲突。就你而言,我想你可以这么做只有当您的映射是可变的并且不将
null
作为值时,这才有效。您的映射不仅是空安全的,而且是不可变的