org.knopflerfish.util
public class CacheMap<K,V> extends java.lang.Object implements java.util.Map<K,V>, java.io.Serializable
HashMap
.
Entries in the map have a limited life-length, and the get
method will only return the stored object during a limited time period.
After the timeout period, the object will be removed.
CachedObject
,
Serialized FormModifier and Type | Field and Description |
---|---|
protected long |
timeout |
Constructor and Description |
---|
CacheMap()
Create a map with default timeout period.
|
CacheMap(long timeout)
Create a map with a specified timeout period.
|
Modifier and Type | Method and Description |
---|---|
void |
clear() |
boolean |
containsKey(java.lang.Object key)
Check if an object exists in the map.
|
boolean |
containsValue(java.lang.Object value) |
java.util.Set<java.util.Map.Entry<K,V>> |
entrySet() |
V |
get(java.lang.Object key)
Get an object from the map.
|
boolean |
isEmpty() |
java.util.Set<K> |
keySet() |
V |
put(K key,
V value)
Store an object in the map.
|
void |
putAll(java.util.Map<? extends K,? extends V> m) |
V |
remove(java.lang.Object key) |
int |
size() |
void |
update()
Force timeout check on all items in map and remove all expired keys and
objects.
|
java.util.Collection<V> |
values() |
public CacheMap()
Equivalent to CacheMap(CachedObject.DEFAULT_TIMEOUT)
CachedObject.DEFAULT_TIMEOUT
,
CachedObject
public CacheMap(long timeout)
After an object has been stored in the map using put
, it
will only be available for timeout
milliseconds. After
that period, get
will return null
timeout
- timeout period in milliseconds for cached objects.public V get(java.lang.Object key)
null
.
Note: Since the timeout check is done for each cached object, be
careful when looping over a map using iterators or other sequences of
get
. The result from a new get
can become
null
faster than you might think. Thus always
check for null
return values from get
.
public boolean containsKey(java.lang.Object key)
false
.public V put(K key, V value)
public void update()
Normally, the timeout check is only done at get
calls, but if
necessary (for example at periodic complete printouts or before loops) you
can (and probably want to) force a timeout check on all cached objects.
public boolean containsValue(java.lang.Object value)