2011-02-09 2 views
1

У меня есть следующий кодВопрос о Java ConcurrentHashMap заменить метод

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

Док говорит:

Заменить запись ключа, только если в данный момент отображается на некоторую величину. Деяния в

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

Поэтому нет, первая заменить не делать оферту.

+0

О, мой плохой, я думал, что смогу избежать поста. Это не позволит мне принять ответ до 7 минут или еще что-то :) – java123

4

От the reference:

Replace (ключ K, V значение)

Заменить запись для ключа, только если в данный момент отображается в некоторое значение.

Поскольку он начинается с нуля, он не будет заменять запись на этом ключе, поэтому он не будет создавать запись для него.

Вы также можете видеть в этой ссылке, что метод просто пропускает значение null, если map.containsKey (key) является ложным, поэтому ничего не происходит.

0

Из Javadoc:

Заменяет запись ключа, только если в данный момент отображается на заданном значении.

null Ожидается, что оба раза, поскольку не было картирования для key.