| org.apache.commons.collections.list.AbstractListDecorator org.apache.commons.collections.list.AbstractSerializableListDecorator org.apache.commons.collections.list.GrowthList
GrowthList | public class GrowthList extends AbstractSerializableListDecorator (Code) | | Decorates another 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.
See Also: LazyList since: Commons Collections 3.2 version: $Revision: 155406 $ $Date: 2006-05-12 23:57:03 +0100 (Fri, 12 May 2006) $ author: Stephen Colebourne author: Paul Legato |
Constructor Summary | |
public | GrowthList() Constructor that uses an ArrayList internally. | public | GrowthList(int initialSize) Constructor that uses an ArrayList internally. | protected | GrowthList(List list) Constructor that wraps (not copies). |
Method Summary | |
public void | add(int index, Object element) 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. | public boolean | addAll(int index, Collection coll) 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. | public static List | decorate(List list) Factory method to create a growth list. | public Object | set(int index, Object element) 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. |
GrowthList | public GrowthList()(Code) | | Constructor that uses an ArrayList internally.
|
GrowthList | public GrowthList(int initialSize)(Code) | | Constructor that uses an ArrayList internally.
Parameters: initialSize - the initial size of the ArrayList throws: IllegalArgumentException - if initial size is invalid |
GrowthList | protected GrowthList(List list)(Code) | | Constructor that wraps (not copies).
Parameters: list - the list to decorate, must not be null throws: IllegalArgumentException - if list is null |
add | public void add(int index, Object element)(Code) | | 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 null .
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.
Parameters: index - the index to add at Parameters: element - the object to add at the specified index throws: UnsupportedOperationException - if the underlying list doesn't implement set throws: ClassCastException - if the underlying list rejects the element throws: IllegalArgumentException - if the underlying list rejects the element |
addAll | public boolean addAll(int index, Collection coll)(Code) | | 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 null .
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.
Parameters: index - the index to add at Parameters: coll - the collection to add at the specified index true if the list changed throws: UnsupportedOperationException - if the underlying list doesn't implement set throws: ClassCastException - if the underlying list rejects the element throws: IllegalArgumentException - if the underlying list rejects the element |
decorate | public static List decorate(List list)(Code) | | Factory method to create a growth list.
Parameters: list - the list to decorate, must not be null throws: IllegalArgumentException - if list is null |
set | public Object set(int index, Object element)(Code) | | 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 null .
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.
Parameters: index - the index to set Parameters: element - the object to set at the specified index the object previously at that index throws: UnsupportedOperationException - if the underlying list doesn't implement set throws: ClassCastException - if the underlying list rejects the element throws: IllegalArgumentException - if the underlying list rejects the element |
|
|