Class SoftRefMap<K,V>

java.lang.Object
com.inductiveautomation.ignition.common.util.SoftRefMap<K,V>
All Implemented Interfaces:
Map<K,V>

public class SoftRefMap<K,V> extends Object implements Map<K,V>
A very simple cache map implementation using soft references around the keys. This class is very much NOT thread-safe, so if there is any multi- threaded use, you must wrap in Collections.synchronizedMap(). Also, containsValue(), entrySet(), and values() are not supported. This class also doesn't prune the keys for cleared references aggressivly - you can prune them yourself by calling pruneClearedReferences()
XXX Colby says: just happened upon this... might be worth looking into replacing this class with the Google Collections MapMaker, which supports soft keys, concurrency, auto pruning, and a value generation function.
  • Field Details

  • Constructor Details

    • SoftRefMap

      public SoftRefMap()
  • Method Details

    • clear

      public void clear()
      Specified by:
      clear in interface Map<K,V>
    • containsKey

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

      public boolean containsValue(Object value)
      Specified by:
      containsValue in interface Map<K,V>
    • entrySet

      public Set<Map.Entry<K,V>> entrySet()
      Specified by:
      entrySet in interface Map<K,V>
    • values

      public Collection<V> values()
      Specified by:
      values in interface Map<K,V>
    • pruneClearedReferences

      public void pruneClearedReferences()
    • get

      public V get(Object key)
      Specified by:
      get in interface Map<K,V>
    • isEmpty

      public boolean isEmpty()
      Specified by:
      isEmpty in interface Map<K,V>
    • keySet

      public Set<K> keySet()
      Specified by:
      keySet in interface Map<K,V>
    • put

      public V put(K key, V value)
      Specified by:
      put in interface Map<K,V>
    • putAll

      public void putAll(Map<? extends K,? extends V> t)
      Specified by:
      putAll in interface Map<K,V>
    • remove

      public V remove(Object key)
      Specified by:
      remove in interface Map<K,V>
    • size

      public int size()
      Specified by:
      size in interface Map<K,V>