Class LRUMap<K,​V>

  • Type Parameters:
    K - the key type
    V - the value type
    All Implemented Interfaces:
    java.util.Map<K,​V>
    Direct Known Subclasses:
    LRUSet

    public class LRUMap<K,​V>
    extends java.lang.Object
    implements java.util.Map<K,​V>
    A LRU (Least Recently Used) map that maintains access-order (newest to oldest) iteration over the elements. This map is limited to the given size. As new items are added, the older items will be removed from this map.

    If you need to be notified of removals, then you can override eldestEntryRemoved(java.util.Map.Entry).

    If you don't want the eldest removed, override removeEldestEntry(java.util.Map.Entry) and return false;

    If you would like to have the iteration order of your LRU structure be based upon access, but want it to iterate from least recently used to most recently used, then you should see FixedSizeHashMap.

    See Also:
    LinkedHashMap, FixedSizeHashMap
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.util.HashMap<K,​ghidra.util.datastruct.LRUMap.Entry<K,​V>> map  
    • Constructor Summary

      Constructors 
      Constructor Description
      LRUMap​(int cacheSize)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void clear()  
      boolean containsKey​(java.lang.Object key)  
      boolean containsValue​(java.lang.Object value)  
      protected void eldestEntryRemoved​(java.util.Map.Entry<K,​V> eldest)
      This is called after an item has been removed from the cache.
      java.util.Set<java.util.Map.Entry<K,​V>> entrySet()  
      V get​(java.lang.Object key)  
      boolean isEmpty()  
      java.util.Set<K> keySet()  
      V put​(K key, V value)  
      void putAll​(java.util.Map<? extends K,​? extends V> m)  
      V remove​(java.lang.Object key)  
      protected boolean removeEldestEntry​(java.util.Map.Entry<K,​V> eldest)  
      int size()  
      java.lang.String toString()  
      java.util.Collection<V> values()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.util.Map

        compute, computeIfAbsent, computeIfPresent, equals, forEach, getOrDefault, hashCode, merge, putIfAbsent, remove, replace, replace, replaceAll
    • Field Detail

      • map

        protected java.util.HashMap<K,​ghidra.util.datastruct.LRUMap.Entry<K,​V>> map
    • Constructor Detail

      • LRUMap

        public LRUMap​(int cacheSize)
    • Method Detail

      • size

        public int size()
        Specified by:
        size in interface java.util.Map<K,​V>
      • isEmpty

        public boolean isEmpty()
        Specified by:
        isEmpty in interface java.util.Map<K,​V>
      • containsKey

        public boolean containsKey​(java.lang.Object key)
        Specified by:
        containsKey in interface java.util.Map<K,​V>
      • containsValue

        public boolean containsValue​(java.lang.Object value)
        Specified by:
        containsValue in interface java.util.Map<K,​V>
      • get

        public V get​(java.lang.Object key)
        Specified by:
        get in interface java.util.Map<K,​V>
      • put

        public V put​(K key,
                     V value)
        Specified by:
        put in interface java.util.Map<K,​V>
      • remove

        public V remove​(java.lang.Object key)
        Specified by:
        remove in interface java.util.Map<K,​V>
      • putAll

        public void putAll​(java.util.Map<? extends K,​? extends V> m)
        Specified by:
        putAll in interface java.util.Map<K,​V>
      • clear

        public void clear()
        Specified by:
        clear in interface java.util.Map<K,​V>
      • keySet

        public java.util.Set<K> keySet()
        Specified by:
        keySet in interface java.util.Map<K,​V>
      • values

        public java.util.Collection<V> values()
        Specified by:
        values in interface java.util.Map<K,​V>
      • entrySet

        public java.util.Set<java.util.Map.Entry<K,​V>> entrySet()
        Specified by:
        entrySet in interface java.util.Map<K,​V>
      • removeEldestEntry

        protected boolean removeEldestEntry​(java.util.Map.Entry<K,​V> eldest)
      • eldestEntryRemoved

        protected void eldestEntryRemoved​(java.util.Map.Entry<K,​V> eldest)
        This is called after an item has been removed from the cache.
        Parameters:
        eldest - the item being removed
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object