Пример #1
0
        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));
        }
Пример #2
0
        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);
        }
Пример #3
0
 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);
     }
 }
Пример #4
0
        //  [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);
            }
        }