Class GrowthList
- java.lang.Object
-
- org.apache.commons.collections.collection.AbstractCollectionDecorator
-
- org.apache.commons.collections.list.AbstractListDecorator
-
- org.apache.commons.collections.list.AbstractSerializableListDecorator
-
- org.apache.commons.collections.list.GrowthList
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Iterable
,java.util.Collection
,java.util.List
@Deprecated(since="2021-04-30") public class GrowthList extends AbstractSerializableListDecorator
Deprecated.Commons Collections 3 is in maintenance mode. Commons Collections 4 should be used instead.Decorates anotherList
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, asnull
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, whereLazyList
grows on get. However, they can be used together by decorating twice.- Since:
- Commons Collections 3.2
- See Also:
LazyList
, Serialized Form
-
-
Constructor Summary
Constructors Constructor Description GrowthList()
Deprecated.Constructor that uses an ArrayList internally.GrowthList(int initialSize)
Deprecated.Constructor that uses an ArrayList internally.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
add(int index, java.lang.Object element)
Deprecated.Decorate the add method to perform the growth behaviour.boolean
addAll(int index, java.util.Collection coll)
Deprecated.Decorate the addAll method to perform the growth behaviour.static java.util.List
decorate(java.util.List list)
Deprecated.Factory method to create a growth list.java.lang.Object
set(int index, java.lang.Object element)
Deprecated.Decorate the set method to perform the growth behaviour.-
Methods inherited from class org.apache.commons.collections.list.AbstractListDecorator
get, indexOf, lastIndexOf, listIterator, listIterator, remove, subList
-
-
-
-
Constructor Detail
-
GrowthList
public GrowthList()
Deprecated.Constructor that uses an ArrayList internally.
-
GrowthList
public GrowthList(int initialSize)
Deprecated.Constructor that uses an ArrayList internally.- Parameters:
initialSize
- the initial size of the ArrayList- Throws:
java.lang.IllegalArgumentException
- if initial size is invalid
-
-
Method Detail
-
decorate
public static java.util.List decorate(java.util.List list)
Deprecated.Factory method to create a growth list.- Parameters:
list
- the list to decorate, must not be null- Throws:
java.lang.IllegalArgumentException
- if list is null
-
add
public void add(int index, java.lang.Object element)
Deprecated.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.
- Specified by:
add
in interfacejava.util.List
- Overrides:
add
in classAbstractListDecorator
- Parameters:
index
- the index to add atelement
- the object to add at the specified index- Throws:
java.lang.UnsupportedOperationException
- if the underlying list doesn't implement setjava.lang.ClassCastException
- if the underlying list rejects the elementjava.lang.IllegalArgumentException
- if the underlying list rejects the element
-
addAll
public boolean addAll(int index, java.util.Collection coll)
Deprecated.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.
- Specified by:
addAll
in interfacejava.util.List
- Overrides:
addAll
in classAbstractListDecorator
- Parameters:
index
- the index to add atcoll
- the collection to add at the specified index- Returns:
- true if the list changed
- Throws:
java.lang.UnsupportedOperationException
- if the underlying list doesn't implement setjava.lang.ClassCastException
- if the underlying list rejects the elementjava.lang.IllegalArgumentException
- if the underlying list rejects the element
-
set
public java.lang.Object set(int index, java.lang.Object element)
Deprecated.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.
- Specified by:
set
in interfacejava.util.List
- Overrides:
set
in classAbstractListDecorator
- Parameters:
index
- the index to setelement
- the object to set at the specified index- Returns:
- the object previously at that index
- Throws:
java.lang.UnsupportedOperationException
- if the underlying list doesn't implement setjava.lang.ClassCastException
- if the underlying list rejects the elementjava.lang.IllegalArgumentException
- if the underlying list rejects the element
-
-