org.apache.commons.collections.list
public class LazyList extends AbstractSerializableListDecorator
List
to create objects in the list on demand.
When the {@link #get(int)} method is called with an index greater than the size of the list, the list will automatically grow in size and return a new object from the specified factory. The gaps will be filled by null. If a get method call encounters a null, it will be replaced with a new object from the factory. Thus this list is unsuitable for storing null objects.
For instance:
Factory factory = new Factory() { public Object create() { return new Date(); } } List lazy = LazyList.decorate(new ArrayList(), factory); Object obj = lazy.get(3);After the above code is executed,
obj
will contain
a new Date
instance. Furthermore, that Date
instance is the fourth element in the list. The first, second,
and third element are all set to null
.
This class is Serializable from Commons Collections 3.1.
Since: Commons Collections 3.0
Version: $Revision: 1.6 $ $Date: 2004/06/03 22:02:13 $
Field Summary | |
---|---|
protected Factory | factory The factory to use to lazily instantiate the objects |
Constructor Summary | |
---|---|
protected | LazyList(List list, Factory factory)
Constructor that wraps (not copies).
|
Method Summary | |
---|---|
static List | decorate(List list, Factory factory)
Factory method to create a lazily instantiating list.
|
Object | get(int index)
Decorate the get method to perform the lazy behaviour.
|
List | subList(int fromIndex, int toIndex) |
Parameters: list the list to decorate, must not be null factory the factory to use for creation, must not be null
Throws: IllegalArgumentException if list or factory is null
Parameters: list the list to decorate, must not be null factory the factory to use for creation, must not be null
Throws: IllegalArgumentException if list or factory is null
If the requested index is greater than the current size, the list will grow to the new size and a new object will be returned from the factory. Indexes in-between the old size and the requested size are left with a placeholder that is replaced with a factory object when requested.
Parameters: index the index to retrieve