List to make it seamlessly grow when
indices larger than the list size are used on add and set,
avoiding most IndexOutOfBoundsExceptions.
This class avoids errors by growing when a set or add method would normally throw an IndexOutOfBoundsException. Note that IndexOutOfBoundsException IS returned for invalid negative indices.
Trying to set or add to an index larger than the size will cause the list
to grow (using null elements). Clearly, care must be taken
not to use excessively large indices, as the internal list will grow to
match.
Trying to use any method other than add or set with an invalid index will call the underlying list and probably result in an IndexOutOfBoundsException.
Take care when using this list with null values, as
null is the value added when growing the list.
All sub-lists will access the underlying list directly, and will throw IndexOutOfBoundsExceptions.
This class differs from LazyList because here growth occurs on
set and add, where LazyList grows on get. However, they
can be used together by decorating twice.
LazyList
| Modifier and Type | Field and Description |
|---|---|
| private static final long | serialVersionUID
Hides org. |
| Access | Constructor and Description |
|---|---|
| public | |
| public | GrowthList(final int
the initial size of the ArrayList initialSize)Constructor that uses an ArrayList internally. |
| protected | GrowthList(final List<E>
the list to decorate, must not be null list)Constructor that wraps (not copies). |
| Modifier and Type | Method and Description |
|---|---|
| public void | add(final int
the index to add at index, final E the object to add at the specified index element)Overrides org. Implements java. |
| public boolean | Returns: true if the list changedthe index to add at index, final Collection<? extends E> the collection to add at the specified index coll)Overrides org. Implements java. |
| public static < the type of the elements in the list E> GrowthList | Returns: a new growth listthe list to decorate, must not be null list)Factory method to create a growth list. |
| public E | Returns: the object previously at that indexthe index to set index, final E the object to set at the specified index element)Overrides org. Implements java. |
| serialVersionUID | back to summary |
|---|---|
| private static final long serialVersionUID Hides org. Serialization version | |
| GrowthList | back to summary |
|---|---|
| public GrowthList() Constructor that uses an ArrayList internally. | |
| GrowthList | back to summary |
|---|---|
| public GrowthList(final int initialSize) Constructor that uses an ArrayList internally.
| |
| GrowthList | back to summary |
|---|---|
| protected GrowthList(final List<E> list) Constructor that wraps (not copies).
| |
| add | back to summary |
|---|---|
| public void add(final int index, final E element) Overrides org. Implements java. Decorate the add method to perform the growth behaviour.
If the requested index is greater than the current size, the list will
grow to the new size. Indices between the old size and the requested
size will be filled with If the index is less than the current size, the value will be added to the underlying list directly. If the index is less than zero, the underlying list is called, which will probably throw an IndexOutOfBoundsException.
| |
| addAll | back to summary |
|---|---|
| public boolean addAll(final int index, final Collection<? extends E> coll) Overrides org. Implements java. Decorate the addAll method to perform the growth behaviour.
If the requested index is greater than the current size, the list will
grow to the new size. Indices between the old size and the requested
size will be filled with If the index is less than the current size, the values will be added to the underlying list directly. If the index is less than zero, the underlying list is called, which will probably throw an IndexOutOfBoundsException.
| |
| growthList | back to summary |
|---|---|
| public static <E> GrowthList Factory method to create a growth list.
| |
| set | back to summary |
|---|---|
| public E set(final int index, final E element) Overrides org. Implements java. Decorate the set method to perform the growth behaviour.
If the requested index is greater than the current size, the list will
grow to the new size. Indices between the old size and the requested
size will be filled with If the index is less than the current size, the value will be set onto the underlying list directly. If the index is less than zero, the underlying list is called, which will probably throw an IndexOutOfBoundsException.
| |