的Java Docs說,putIfAbsent
相當於的ConcurrentHashMap把VS的putIfAbsent
if (!map.containsKey(key))
return map.put(key, value);
else
return map.get(key);
因此,如果關鍵在地圖中存在,它不會更新它的價值。它是否正確?
如果我想根據某些標準更新密鑰值,該怎麼辦?說到期時間等
這將是一個更好的impl添加和更新緩存?
public void AddToCache(T key, V value)
{
V local = _cache.putifabsent(key, value);
if(local.equals(value) && local.IsExpired() == false){
return;
}
// this is for updating the cache with a new value
_cache.put(key, value);
}
@Gray第二行。代碼說,如果密鑰不在緩存中,則放置它,否則只返回值。如果鍵值對已經在緩存中,它不會更新值。 – DarthVader
雖然你的邏輯有點困難。如果'local'等於'value',那麼你只是更新了地圖。你不是說如果它不等於「價值」?這意味着地圖上已經有東西了嗎? –
哦,我明白了,對不起。您正在使用「更新」一詞來表示無法創建。你是對的,對不起。 – Gray