org.eclipse.net4j.util.ref
Class ReferenceValueMap2<K,V>

java.lang.Object
  extended by java.util.AbstractMap<K,V>
      extended by org.eclipse.net4j.util.ref.ReferenceValueMap2<K,V>
All Implemented Interfaces:
Map<K,V>
Direct Known Subclasses:
ReferenceValueMap, ReferenceValueMap2.Soft, ReferenceValueMap2.Strong, ReferenceValueMap2.Weak

public abstract class ReferenceValueMap2<K,V>
extends AbstractMap<K,V>

A Map implementation that uses KeyedReference instances (KeyedStrongReference, KeyedSoftReference, KeyedWeakReference or KeyedPhantomReference) as its values.

A ReferenceValueMap can be used to cache mappings until the value of the mapping is no longer reachable from outside of the map

Note: This map is not synchronized. If it is to be used by multiple threads concurrently the user is responsible for applying proper external synchronization!

Since:
3.3

Nested Class Summary
static class ReferenceValueMap2.Soft<K,V>
           
static class ReferenceValueMap2.Strong<K,V>
           
static class ReferenceValueMap2.Weak<K,V>
           
 
Nested classes/interfaces inherited from class java.util.AbstractMap
AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>
 
Nested classes/interfaces inherited from interface java.util.Map
Map.Entry<K,V>
 
Constructor Summary
ReferenceValueMap2()
           
ReferenceValueMap2(Map<K,KeyedReference<K,V>> map)
           
 
Method Summary
 void clear()
           
 boolean containsKey(Object key)
           
 boolean containsValue(Object value)
           
protected  ReferenceQueue<V> createQueue()
           
protected abstract  KeyedReference<K,V> createReference(K key, V value, ReferenceQueue<V> queue)
           
protected  V dereference(KeyedReference<K,V> ref)
           
 Set<Map.Entry<K,V>> entrySet()
           
 V get(Object key)
           
 boolean isEmpty()
           
protected  void purged(K key)
           
protected  void purgeQueue()
           
 V put(K key, V value)
           
 V remove(Object key)
           
 int size()
           
 
Methods inherited from class java.util.AbstractMap
clone, equals, hashCode, keySet, putAll, toString, values
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ReferenceValueMap2

public ReferenceValueMap2()

ReferenceValueMap2

public ReferenceValueMap2(Map<K,KeyedReference<K,V>> map)
Method Detail

size

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

isEmpty

public boolean isEmpty()
Specified by:
isEmpty in interface Map<K,V>
Overrides:
isEmpty in class AbstractMap<K,V>

containsKey

public boolean containsKey(Object key)
Specified by:
containsKey in interface Map<K,V>
Overrides:
containsKey in class AbstractMap<K,V>

containsValue

public boolean containsValue(Object value)
Specified by:
containsValue in interface Map<K,V>
Overrides:
containsValue in class AbstractMap<K,V>

get

public V get(Object key)
Specified by:
get in interface Map<K,V>
Overrides:
get in class AbstractMap<K,V>

put

public V put(K key,
             V value)
Specified by:
put in interface Map<K,V>
Overrides:
put in class AbstractMap<K,V>

remove

public V remove(Object key)
Specified by:
remove in interface Map<K,V>
Overrides:
remove in class AbstractMap<K,V>

clear

public void clear()
Specified by:
clear in interface Map<K,V>
Overrides:
clear in class AbstractMap<K,V>

entrySet

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

createQueue

protected ReferenceQueue<V> createQueue()

purgeQueue

protected void purgeQueue()

purged

protected void purged(K key)

dereference

protected V dereference(KeyedReference<K,V> ref)

createReference

protected abstract KeyedReference<K,V> createReference(K key,
                                                       V value,
                                                       ReferenceQueue<V> queue)


Copyright (c) 2011, 2012 Eike Stepper (Berlin, Germany) and others.