ccs.utils
Class ForgetfulMap<K,V>
java.lang.Object
ccs.utils.ForgetfulMap<K,V>
- All Implemented Interfaces:
- java.util.Map<K,V>
public class ForgetfulMap<K,V>
- extends java.lang.Object
- implements java.util.Map<K,V>
A forgetful hashmap behaves like an ordinary hashmap, with one exception:
mappings which are not used for a period of time disappear. This collection
is useful for things like sessions, which should expire after a period of inactivity.
The expiry is done lazily; to ensure that mappings are forgotten promptly, call
the forget
method explicitly. MT-UNSAFE - synchronize externally.
Note that operations which are safe to leave unsycnhronized for a normal hash map
may not be safe for a forgetful hashmap, due to the side-effects created
by the forgetting process. Synchronize explicitly if in doubt. Only explicit
get
or put
operations refresh the mappings -
accessing the key via alternative views or iterators does not.
Nested classes/interfaces inherited from interface java.util.Map |
java.util.Map.Entry<K,V> |
Constructor Summary |
ForgetfulMap()
Construct a forgetful hashmap which forgets after 30 minutes. |
ForgetfulMap(long memorySeconds)
Construct a forgetful hashmap which forgets mappings after the specified
period. |
Method Summary |
void |
clear()
|
boolean |
containsKey(java.lang.Object key)
|
boolean |
containsValue(java.lang.Object value)
|
java.util.Set<java.util.Map.Entry<K,V>> |
entrySet()
Not supported. |
void |
forget()
Forget any mappings which haven't been used in a while. |
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> src)
|
V |
remove(java.lang.Object key)
|
int |
size()
|
java.util.Collection<V> |
values()
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface java.util.Map |
equals, hashCode |
ForgetfulMap
public ForgetfulMap()
- Construct a forgetful hashmap which forgets after 30 minutes.
ForgetfulMap
public ForgetfulMap(long memorySeconds)
- Construct a forgetful hashmap which forgets mappings after the specified
period.
- Parameters:
memorySeconds
- how long to remember unaccessed mappings for.
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> src)
- 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()
- Not supported.
- Specified by:
entrySet
in interface java.util.Map<K,V>
forget
public void forget()
- Forget any mappings which haven't been used in a while.