Class LazyMap
- java.lang.Object
-
- org.apache.commons.collections.map.AbstractMapDecorator
-
- org.apache.commons.collections.map.LazyMap
-
- All Implemented Interfaces:
java.io.Serializable
,java.util.Map
- Direct Known Subclasses:
LazySortedMap
public class LazyMap extends AbstractMapDecorator implements java.util.Map, java.io.Serializable
Decorates anotherMap
to create objects in the map on demand.When the
get(Object)
method is called with a key that does not exist in the map, the factory is used to create the object. The created object will be added to the map using the requested key.For instance:
Factory factory = new Factory() { public Object create() { return new Date(); } } Map lazy = Lazy.map(new HashMap(), factory); Object obj = lazy.get("NOW");
After the above code is executed,obj
will contain a newDate
instance. Furthermore, thatDate
instance is mapped to the "NOW" key in the map.Note that LazyMap 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.This class is Serializable from Commons Collections 3.1.
- Since:
- Commons Collections 3.0
- Version:
- $Revision: 646777 $ $Date: 2008-04-10 14:33:15 +0200 (Thu, 10 Apr 2008) $
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected Transformer
factory
The factory to use to construct elementsprivate static long
serialVersionUID
Serialization version-
Fields inherited from class org.apache.commons.collections.map.AbstractMapDecorator
map
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
LazyMap(java.util.Map map, Factory factory)
Constructor that wraps (not copies).protected
LazyMap(java.util.Map map, Transformer factory)
Constructor that wraps (not copies).
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static java.util.Map
decorate(java.util.Map map, Factory factory)
Factory method to create a lazily instantiated map.static java.util.Map
decorate(java.util.Map map, Transformer factory)
Factory method to create a lazily instantiated map.java.lang.Object
get(java.lang.Object key)
private void
readObject(java.io.ObjectInputStream in)
Read the map in using a custom routine.private void
writeObject(java.io.ObjectOutputStream out)
Write the map out using a custom routine.-
Methods inherited from class org.apache.commons.collections.map.AbstractMapDecorator
clear, containsKey, containsValue, entrySet, equals, getMap, hashCode, isEmpty, keySet, put, putAll, remove, size, toString, values
-
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
Serialization version- See Also:
- Constant Field Values
-
factory
protected final Transformer factory
The factory to use to construct elements
-
-
Constructor Detail
-
LazyMap
protected LazyMap(java.util.Map map, Factory factory)
Constructor that wraps (not copies).- Parameters:
map
- the map to decorate, must not be nullfactory
- the factory to use, must not be null- Throws:
java.lang.IllegalArgumentException
- if map or factory is null
-
LazyMap
protected LazyMap(java.util.Map map, Transformer factory)
Constructor that wraps (not copies).- Parameters:
map
- the map to decorate, must not be nullfactory
- the factory to use, must not be null- Throws:
java.lang.IllegalArgumentException
- if map or factory is null
-
-
Method Detail
-
decorate
public static java.util.Map decorate(java.util.Map map, Factory factory)
Factory method to create a lazily instantiated map.- Parameters:
map
- the map to decorate, must not be nullfactory
- the factory to use, must not be null- Throws:
java.lang.IllegalArgumentException
- if map or factory is null
-
decorate
public static java.util.Map decorate(java.util.Map map, Transformer factory)
Factory method to create a lazily instantiated map.- Parameters:
map
- the map to decorate, must not be nullfactory
- the factory to use, must not be null- Throws:
java.lang.IllegalArgumentException
- if map or factory is null
-
writeObject
private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException
Write the map out using a custom routine.- Parameters:
out
- the output stream- Throws:
java.io.IOException
- Since:
- Commons Collections 3.1
-
readObject
private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException
Read the map in using a custom routine.- Parameters:
in
- the input stream- Throws:
java.io.IOException
java.lang.ClassNotFoundException
- Since:
- Commons Collections 3.1
-
get
public java.lang.Object get(java.lang.Object key)
- Specified by:
get
in interfacejava.util.Map
- Overrides:
get
in classAbstractMapDecorator
-
-