public class AutoPopulatingList<E>
extends java.lang.Object
implements java.util.List<E>, java.io.Serializable
Note: This class is not thread-safe. To create a thread-safe version,
use the Collections.synchronizedList(java.util.List<T>)
utility methods.
Inspired by LazyList
from Commons Collections.
Modifier and Type | Class and Description |
---|---|
static interface |
AutoPopulatingList.ElementFactory<E>
Factory interface for creating elements for an index-based access
data structure such as a <code>List</code>.
|
static class |
AutoPopulatingList.ElementInstantiationException
Exception to be thrown from ElementFactory.
|
private static class |
AutoPopulatingList.ReflectiveElementFactory<E>
Reflective implementation of the ElementFactory interface,
using
Class.newInstance() on a given element class. |
Modifier and Type | Field and Description |
---|---|
private java.util.List<E> |
backingList
The <code>List</code> that all operations are eventually delegated to.
|
private AutoPopulatingList.ElementFactory<E> |
elementFactory
The
AutoPopulatingList.ElementFactory to use to create new <code>List</code> elements
on demand. |
Constructor and Description |
---|
AutoPopulatingList(AutoPopulatingList.ElementFactory<E> elementFactory)
Creates a new
AutoPopulatingList that is backed by a standard
<code>ArrayList</code> and creates new elements on demand using the supplied AutoPopulatingList.ElementFactory . |
AutoPopulatingList(java.lang.Class<? extends E> elementClass)
Creates a new
AutoPopulatingList that is backed by a standard
<code>ArrayList</code> and adds new instances of the supplied <code>element Class</code>
to the backing <code>List</code> on demand. |
AutoPopulatingList(java.util.List<E> backingList,
AutoPopulatingList.ElementFactory<E> elementFactory)
Creates a new
AutoPopulatingList that is backed by the supplied <code>List</code>
and creates new elements on demand using the supplied AutoPopulatingList.ElementFactory . |
AutoPopulatingList(java.util.List<E> backingList,
java.lang.Class<? extends E> elementClass)
Creates a new
AutoPopulatingList that is backed by the supplied <code>List</code>
and adds new instances of the supplied <code>element Class</code> to the backing
<code>List</code> on demand. |
Modifier and Type | Method and Description |
---|---|
boolean |
add(E o) |
void |
add(int index,
E element) |
boolean |
addAll(java.util.Collection<? extends E> c) |
boolean |
addAll(int index,
java.util.Collection<? extends E> c) |
void |
clear() |
boolean |
contains(java.lang.Object o) |
boolean |
containsAll(java.util.Collection c) |
boolean |
equals(java.lang.Object other) |
E |
get(int index)
Get the element at the supplied index, creating it if there is
no element at that index.
|
int |
hashCode() |
int |
indexOf(java.lang.Object o) |
boolean |
isEmpty() |
java.util.Iterator<E> |
iterator() |
int |
lastIndexOf(java.lang.Object o) |
java.util.ListIterator<E> |
listIterator() |
java.util.ListIterator<E> |
listIterator(int index) |
E |
remove(int index) |
boolean |
remove(java.lang.Object o) |
boolean |
removeAll(java.util.Collection<?> c) |
boolean |
retainAll(java.util.Collection<?> c) |
E |
set(int index,
E element) |
int |
size() |
java.util.List<E> |
subList(int fromIndex,
int toIndex) |
java.lang.Object[] |
toArray() |
<T> T[] |
toArray(T[] a) |
private final java.util.List<E> backingList
private final AutoPopulatingList.ElementFactory<E> elementFactory
AutoPopulatingList.ElementFactory
to use to create new <code>List</code> elements
on demand.public AutoPopulatingList(java.lang.Class<? extends E> elementClass)
AutoPopulatingList
that is backed by a standard
<code>ArrayList</code> and adds new instances of the supplied <code>element Class</code>
to the backing <code>List</code> on demand.public AutoPopulatingList(java.util.List<E> backingList, java.lang.Class<? extends E> elementClass)
AutoPopulatingList
that is backed by the supplied <code>List</code>
and adds new instances of the supplied <code>element Class</code> to the backing
<code>List</code> on demand.public AutoPopulatingList(AutoPopulatingList.ElementFactory<E> elementFactory)
AutoPopulatingList
that is backed by a standard
<code>ArrayList</code> and creates new elements on demand using the supplied AutoPopulatingList.ElementFactory
.public AutoPopulatingList(java.util.List<E> backingList, AutoPopulatingList.ElementFactory<E> elementFactory)
AutoPopulatingList
that is backed by the supplied <code>List</code>
and creates new elements on demand using the supplied AutoPopulatingList.ElementFactory
.public boolean add(E o)
public boolean addAll(java.util.Collection<? extends E> c)
public boolean addAll(int index, java.util.Collection<? extends E> c)
addAll
in interface java.util.List<E>
public void clear()
public boolean contains(java.lang.Object o)
public boolean containsAll(java.util.Collection c)
public E get(int index)
get
in interface java.util.List<E>
public int indexOf(java.lang.Object o)
indexOf
in interface java.util.List<E>
public boolean isEmpty()
public java.util.Iterator<E> iterator()
public int lastIndexOf(java.lang.Object o)
lastIndexOf
in interface java.util.List<E>
public java.util.ListIterator<E> listIterator()
listIterator
in interface java.util.List<E>
public java.util.ListIterator<E> listIterator(int index)
listIterator
in interface java.util.List<E>
public boolean remove(java.lang.Object o)
public boolean removeAll(java.util.Collection<?> c)
public boolean retainAll(java.util.Collection<?> c)
public int size()
public java.util.List<E> subList(int fromIndex, int toIndex)
subList
in interface java.util.List<E>
public java.lang.Object[] toArray()
public <T> T[] toArray(T[] a)
public boolean equals(java.lang.Object other)