Class PassiveExpiringMap<K,V>
- Type Parameters:
K
- the type of the keys in the mapV
- the type of the values in the map
- All Implemented Interfaces:
Serializable
,Map<K,
,V> Get<K,
,V> IterableGet<K,
,V> IterableMap<K,
,V> Put<K,
V>
Map
to evict expired entries once their expiration
time has been reached.
When putting a key-value pair in the map this decorator uses a
PassiveExpiringMap.ExpirationPolicy
to determine how long the entry should remain alive
as defined by an expiration time value.
When accessing the mapped value for a key, its expiration time is checked,
and if it is a negative value or if it is greater than the current time, the
mapped value is returned. Otherwise, the key is removed from the decorated
map, and null
is returned.
When invoking methods that involve accessing the entire map contents (i.e
containsKey(Object)
, entrySet()
, etc.) this decorator
removes all expired entries prior to actually completing the invocation.
Note that PassiveExpiringMap
is not synchronized and is not
thread-safe. If you wish to use this map from multiple threads
concurrently, you must use appropriate synchronization. The simplest approach
is to wrap this map using Collections.synchronizedMap(Map)
.
This class may throw exceptions when accessed by concurrent threads without
synchronization.
- Since:
- 4.0
- Version:
- $Id: PassiveExpiringMap.java 1686855 2015-06-22 13:00:27Z tn $
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
AExpirationPolicy
that returns a expiration time that is a constant about of time in the future from the current time.static interface
A policy to determine the expiration time for key-value entries. -
Constructor Summary
ConstructorsConstructorDescriptionDefault constructor.PassiveExpiringMap
(long timeToLiveMillis) Construct a map decorator that decorates the given map using the given time-to-live value measured in milliseconds to create and use aPassiveExpiringMap.ConstantTimeToLiveExpirationPolicy
expiration policy.PassiveExpiringMap
(long timeToLive, TimeUnit timeUnit) Construct a map decorator using the given time-to-live value measured in the given time units of measure to create and use aPassiveExpiringMap.ConstantTimeToLiveExpirationPolicy
expiration policy.PassiveExpiringMap
(long timeToLive, TimeUnit timeUnit, Map<K, V> map) Construct a map decorator that decorates the given map using the given time-to-live value measured in the given time units of measure to createPassiveExpiringMap.ConstantTimeToLiveExpirationPolicy
expiration policy.PassiveExpiringMap
(long timeToLiveMillis, Map<K, V> map) Construct a map decorator using the given time-to-live value measured in milliseconds to create and use aPassiveExpiringMap.ConstantTimeToLiveExpirationPolicy
expiration policy.PassiveExpiringMap
(Map<K, V> map) Constructs a map decorator that decorates the given map and results in entries NEVER expiring.PassiveExpiringMap
(PassiveExpiringMap.ExpirationPolicy<K, V> expiringPolicy) Construct a map decorator using the given expiration policy to determine expiration times.PassiveExpiringMap
(PassiveExpiringMap.ExpirationPolicy<K, V> expiringPolicy, Map<K, V> map) Construct a map decorator that decorates the given map and uses the given expiration policy to determine expiration times. -
Method Summary
Modifier and TypeMethodDescriptionvoid
clear()
NormalMap.clear()
behavior with the addition of clearing all expiration entries as well.boolean
containsKey
(Object key) All expired entries are removed from the map prior to determining the contains result.boolean
containsValue
(Object value) All expired entries are removed from the map prior to determining the contains result.entrySet()
All expired entries are removed from the map prior to returning the entry set.All expired entries are removed from the map prior to returning the entry value.boolean
isEmpty()
All expired entries are removed from the map prior to determining if it is empty.keySet()
All expired entries are removed from the map prior to returning the key set.Add the given key-value pair to this map as well as recording the entry's expiration time based on the current time in milliseconds and this map'sexpiringPolicy
.void
NormalMap.remove(Object)
behavior with the addition of removing any expiration entry as well.int
size()
All expired entries are removed from the map prior to returning the size.values()
All expired entries are removed from the map prior to returning the value collection.Methods inherited from class org.apache.commons.collections4.map.AbstractMapDecorator
decorated, equals, hashCode, toString
Methods inherited from class org.apache.commons.collections4.map.AbstractIterableMap
mapIterator
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
-
Constructor Details
-
PassiveExpiringMap
public PassiveExpiringMap()Default constructor. Constructs a map decorator that results in entries NEVER expiring. -
PassiveExpiringMap
Construct a map decorator using the given expiration policy to determine expiration times.- Parameters:
expiringPolicy
- the policy used to determine expiration times of entries as they are added.- Throws:
NullPointerException
- if expiringPolicy is null
-
PassiveExpiringMap
Construct a map decorator that decorates the given map and uses the given expiration policy to determine expiration times. If there are any elements already in the map being decorated, they will NEVER expire unless they are replaced.- Parameters:
expiringPolicy
- the policy used to determine expiration times of entries as they are added.map
- the map to decorate, must not be null.- Throws:
NullPointerException
- if the map or expiringPolicy is null.
-
PassiveExpiringMap
public PassiveExpiringMap(long timeToLiveMillis) Construct a map decorator that decorates the given map using the given time-to-live value measured in milliseconds to create and use aPassiveExpiringMap.ConstantTimeToLiveExpirationPolicy
expiration policy.- Parameters:
timeToLiveMillis
- the constant amount of time (in milliseconds) an entry is available before it expires. A negative value results in entries that NEVER expire. A zero value results in entries that ALWAYS expire.
-
PassiveExpiringMap
Construct a map decorator using the given time-to-live value measured in milliseconds to create and use aPassiveExpiringMap.ConstantTimeToLiveExpirationPolicy
expiration policy. If there are any elements already in the map being decorated, they will NEVER expire unless they are replaced.- Parameters:
timeToLiveMillis
- the constant amount of time (in milliseconds) an entry is available before it expires. A negative value results in entries that NEVER expire. A zero value results in entries that ALWAYS expire.map
- the map to decorate, must not be null.- Throws:
NullPointerException
- if the map is null.
-
PassiveExpiringMap
Construct a map decorator using the given time-to-live value measured in the given time units of measure to create and use aPassiveExpiringMap.ConstantTimeToLiveExpirationPolicy
expiration policy.- Parameters:
timeToLive
- the constant amount of time an entry is available before it expires. A negative value results in entries that NEVER expire. A zero value results in entries that ALWAYS expire.timeUnit
- the unit of time for thetimeToLive
parameter, must not be null.- Throws:
NullPointerException
- if the time unit is null.
-
PassiveExpiringMap
Construct a map decorator that decorates the given map using the given time-to-live value measured in the given time units of measure to createPassiveExpiringMap.ConstantTimeToLiveExpirationPolicy
expiration policy. This policy is used to determine expiration times. If there are any elements already in the map being decorated, they will NEVER expire unless they are replaced.- Parameters:
timeToLive
- the constant amount of time an entry is available before it expires. A negative value results in entries that NEVER expire. A zero value results in entries that ALWAYS expire.timeUnit
- the unit of time for thetimeToLive
parameter, must not be null.map
- the map to decorate, must not be null.- Throws:
NullPointerException
- if the map or time unit is null.
-
PassiveExpiringMap
Constructs a map decorator that decorates the given map and results in entries NEVER expiring. If there are any elements already in the map being decorated, they also will NEVER expire.- Parameters:
map
- the map to decorate, must not be null.- Throws:
NullPointerException
- if the map is null.
-
-
Method Details
-
clear
public void clear()NormalMap.clear()
behavior with the addition of clearing all expiration entries as well. -
containsKey
All expired entries are removed from the map prior to determining the contains result.- Specified by:
containsKey
in interfaceGet<K,
V> - Specified by:
containsKey
in interfaceMap<K,
V> - Overrides:
containsKey
in classAbstractMapDecorator<K,
V> - See Also:
-
containsValue
All expired entries are removed from the map prior to determining the contains result.- Specified by:
containsValue
in interfaceGet<K,
V> - Specified by:
containsValue
in interfaceMap<K,
V> - Overrides:
containsValue
in classAbstractMapDecorator<K,
V> - See Also:
-
entrySet
All expired entries are removed from the map prior to returning the entry set. -
get
All expired entries are removed from the map prior to returning the entry value. -
isEmpty
public boolean isEmpty()All expired entries are removed from the map prior to determining if it is empty. -
keySet
All expired entries are removed from the map prior to returning the key set. -
put
Add the given key-value pair to this map as well as recording the entry's expiration time based on the current time in milliseconds and this map'sexpiringPolicy
.Note that the return type is Object, rather than V as in the Map interface. See the class Javadoc for further info.
-
putAll
-
remove
NormalMap.remove(Object)
behavior with the addition of removing any expiration entry as well. -
size
public int size()All expired entries are removed from the map prior to returning the size. -
values
All expired entries are removed from the map prior to returning the value collection.
-