com.atlassian.confluence.util.collections
Class LazyMap<K,V>
java.lang.Object
java.util.AbstractMap<K,V>
com.atlassian.confluence.util.collections.LazyMap<K,V>
- Type Parameters:
K - the key type.V - the value type.
- All Implemented Interfaces:
- Map<K,V>
@NotThreadSafe
public class LazyMap<K,V>
- extends AbstractMap<K,V>
- implements Map<K,V>
A Map that is backed by a delegate map that contains suppliers
for the values that are called lazily when required. The values returned from the delegate
are cached so they are only retrieved once.
The goal is to reduce the overhead required to instantiate and store entries which might not
be used. For example, when rendering Velocity templates, the context map is populated with
many things that are only ever required occasionally.
Note: even though this class is effectively immutable and does not support direct mutation,
the caching strategy is not thread-safe and should not be used if thread-safety is
required. Adding thread-safety to this class would be fairly trivial through.
| Nested classes/interfaces inherited from interface java.util.Map |
Map.Entry<K,V> |
newInstance
public static <K,V> LazyMap<K,V> newInstance(Map<K,? extends com.google.common.base.Supplier<? extends V>> delegate)
get
public V get(Object key)
- .
Implements the local caching of a value from the master.
- Specified by:
get in interface Map<K,V>- Overrides:
get in class AbstractMap<K,V>
keySet
public Set<K> keySet()
- Specified by:
keySet in interface Map<K,V>- Overrides:
keySet 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>
entrySet
public Set<Map.Entry<K,V>> entrySet()
- Specified by:
entrySet in interface Map<K,V>- Specified by:
entrySet in class AbstractMap<K,V>
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>
remove
public V remove(Object key)
- Specified by:
remove in interface Map<K,V>- Overrides:
remove in class AbstractMap<K,V>
Copyright © 2003-2012 Atlassian. All Rights Reserved.