我有以下代码
public class Test{
private static final String key = "key";
public static void main(String[] a){
ConcurrentHashMap<String,String > map = new ConcurrentHashMap<String,String>();
System.out.println(map.replace(key,"1"));
System.out.println(map.replace(key,"2"));
}
}
输出两次都为null。它不应该是1秒钟吗?
答案 0 :(得分:4)
替换(K键,V值)
替换条目 仅当键映射到某个值时才用于键。
因为它以null开头,所以它不会替换该键的条目 - 所以它不会为它创建一个条目。
您还可以在该链接中看到,如果map.containsKey(key)为false,则该方法只会跳过以返回null,因此没有任何反应。
答案 1 :(得分:1)
医生说:
仅在键入时替换键的条目 目前映射到某个值。行为 如
if ((map.containsKey(key)) return map.put(key, value); else return null;
因此,第一个替换不会执行put。
答案 2 :(得分:0)
来自javadoc:
仅当前映射到给定值时才替换键的条目。
null
两次都是预期的,因为key
没有映射。