public override bool Equals(object obj) { if (obj == null || GetType() != obj.GetType()) { return(false); } LRUCacheItem <K, V> objAsItem = obj as LRUCacheItem <K, V>; return(Key.Equals(objAsItem.Key) && Value.Equals(objAsItem.Value)); }
public void add(K key, V val) { if (cacheMap.Count >= capacity) { removeFirst(); } LRUCacheItem <K, V> cacheItem = new LRUCacheItem <K, V>(key, val); LinkedListNode <LRUCacheItem <K, V> > node = new LinkedListNode <LRUCacheItem <K, V> >(cacheItem); lruList.AddLast(node); cacheMap.Add(key, node); }
public void add(K key, V val) { lock (locker) { if (this.cacheMap.Count >= capacity) { // Remove from LRUPriority LinkedListNode <LRUCacheItem <K, V> > removeNode = this.lruList.First; this.lruList.RemoveFirst(); // Remove from cache this.cacheMap.Remove(removeNode.Value.key); } LRUCacheItem <K, V> cacheItem = new LRUCacheItem <K, V>(key, val); LinkedListNode <LRUCacheItem <K, V> > node = new LinkedListNode <LRUCacheItem <K, V> >(cacheItem); this.lruList.AddLast(node); this.cacheMap.Add(key, node); } }
// [MethodImpl(MethodImplOptions.Synchronized)] public void add(K key, V val) { lock (this) { LinkedListNode <LRUCacheItem <K, V> > lnode; if (cacheMap.TryGetValue(key, out lnode)) { lruList.Remove(lnode); cacheMap.Remove(key); } if (cacheMap.Count >= capacity) { removeFirst(); } LRUCacheItem <K, V> cacheItem = new LRUCacheItem <K, V>(key, val); LinkedListNode <LRUCacheItem <K, V> > node = new LinkedListNode <LRUCacheItem <K, V> >(cacheItem); lruList.AddLast(node); cacheMap.Add(key, node); } }