1

我有以下代码

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"));
}

}

两次输出都为空。不应该是1秒吗?

4

3 回答 3

4

参考:

替换(K键,V值)

仅当当前映射到某个值时才替换键的条目。

由于它以 null 开头,因此它不会替换该键处的条目 - 因此它不会为其创建条目。

您还可以在该链接中看到,如果 map.containsKey(key) 为 false,该方法只是跳过以返回 null,因此没有任何反应。

于 2011-02-09T19:43:16.243 回答
1

医生说:

仅当当前映射到某个值时才替换键的条目。充当

if ((map.containsKey(key)) 
    return map.put(key, value);   
else
    return null;

因此,不,第一个替换不会做 put。

于 2011-02-09T19:44:19.903 回答
0

从javadoc:

仅当当前映射到给定值时才替换键的条目。

null两次都是预期的,因为从来没有为key.

于 2011-02-09T19:45:16.823 回答