जावा Docs का कहना है कि, putIfAbsent
ConcurrentHashMap बनाम putIfAbsent
if (!map.containsKey(key))
return map.put(key, value);
else
return map.get(key);
के बराबर है तो कुंजी के नक्शे में मौजूद रहने पर, यह अपने मूल्य अपडेट नहीं होता। क्या ये सही है?
यदि मैं कुछ मानदंडों के आधार पर एक कुंजी मान अपडेट करना चाहता हूं तो क्या होगा? समाप्ति समय आदि कहें
क्या यह कैश जोड़ने और अपडेट करने के लिए बेहतर प्रभाव होगा?
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
हालांकि आपका तर्क थोड़ा सा है। यदि 'स्थानीय'' मान' के बराबर है तो आपने अभी नक्शा अपडेट किया है। क्या आपका मतलब यह नहीं है कि यह * मूल्य * के बराबर नहीं है? मतलब मानचित्र में पहले से ही कुछ था? –
ओह, मुझे खेद है, क्षमा करें। आप बनाने के लिए "अद्यतन" शब्द का उपयोग नहीं कर रहे हैं। तुम सही हो, क्षमा करें। – Gray