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 
      ChangeModifier and Type Field Description
      NEWprotected java.util.HashMap<K,​ghidra.util.datastruct.LRUMap.Entry<K,​V>> map  
    • Constructor Summary

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

      All Methods Instance Methods Concrete Methods 
      ChangeModifier 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 NEW

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

Constructor Detail

  • 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 ite being removed
    • toString

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