java.util
public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E>
As recommended by Collection and List, the subclass should provide at least a no-argument and a Collection constructor. This class is not synchronized.
Since: 1.2
See Also: Collection List AbstractSequentialList AbstractCollection ListIterator
UNKNOWN: updated to 1.4
Field Summary | |
---|---|
protected int | modCount
A count of the number of structural modifications that have been made to
the list (that is, insertions and removals). |
Constructor Summary | |
---|---|
protected | AbstractList()
The main constructor, for use by subclasses. |
Method Summary | |
---|---|
void | add(int index, E o)
Insert an element into the list at a given position (optional operation).
|
boolean | add(E o)
Add an element to the end of the list (optional operation). |
boolean | addAll(int index, Collection<? extends E> c)
Insert the contents of a collection into the list at a given position
(optional operation). |
void | clear()
Clear the list, such that a subsequent call to isEmpty() would return
true (optional operation). |
boolean | equals(Object o)
Test whether this list is equal to another object. |
abstract E | get(int index)
Returns the elements at the specified position in the list.
|
int | hashCode()
Obtains a hash code for this list. |
int | indexOf(Object o)
Obtain the first index at which a given object is to be found in this
list. |
Iterator<E> | iterator()
Obtain an Iterator over this list, whose sequence is the list order.
|
int | lastIndexOf(Object o)
Obtain the last index at which a given object is to be found in this
list. |
ListIterator<E> | listIterator()
Obtain a ListIterator over this list, starting at the beginning. |
ListIterator<E> | listIterator(int index)
Obtain a ListIterator over this list, starting at a given position.
|
E | remove(int index)
Remove the element at a given position in this list (optional operation).
|
protected void | removeRange(int fromIndex, int toIndex)
Remove a subsection of the list. |
E | set(int index, E o)
Replace an element of this list with another object (optional operation).
|
List<E> | subList(int fromIndex, int toIndex)
Obtain a List view of a subsection of this list, from fromIndex
(inclusive) to toIndex (exclusive). |
To make lists fail-fast, increment this field by just 1 in the
add(int, Object)
and remove(int)
methods.
Otherwise, this field may be ignored.
Parameters: index the location to insert the item o the object to insert
Throws: UnsupportedOperationException if this list does not support the add operation IndexOutOfBoundsException if index < 0 || index > size() ClassCastException if o cannot be added to this list due to its type IllegalArgumentException if o cannot be added to this list for some other reason
See Also: modCount
add(size(), o);
, and will fail if that version does.
Parameters: o the object to add
Returns: true, as defined by Collection for a modified list
Throws: UnsupportedOperationException if this list does not support the add operation ClassCastException if o cannot be added to this list due to its type IllegalArgumentException if o cannot be added to this list for some other reason
See Also: AbstractList
Parameters: index the location to insert the collection c the collection to insert
Returns: true if the list was modified by this action, that is, if c is non-empty
Throws: UnsupportedOperationException if this list does not support the addAll operation IndexOutOfBoundsException if index < 0 || index > size() ClassCastException if some element of c cannot be added to this list due to its type IllegalArgumentException if some element of c cannot be added to this list for some other reason NullPointerException if the specified collection is null
See Also: AbstractList
removeRange(0, size())
, so it will fail unless remove
or removeRange is overridden.
Throws: UnsupportedOperationException if this list does not support the clear operation
See Also: AbstractList AbstractList
l1.size() == l2.size()
, and for every integer n between 0
and l1.size() - 1
inclusive, l1.get(n) == null ?
l2.get(n) == null : l1.get(n).equals(l2.get(n))
.
This implementation returns true if the object is this, or false if the object is not a List. Otherwise, it iterates over both lists (with iterator()), returning false if two elements compare false or one list is shorter, and true if the iteration completes successfully.
Parameters: o the object to test for equality with this list
Returns: true if o is equal to this list
Parameters: index the element to return
Returns: the element at that position
Throws: IndexOutOfBoundsException if index < 0 || index >= size()
hashCode = 1; Iterator i = list.iterator(); while (i.hasNext()) { Object obj = i.next(); hashCode = 31 * hashCode + (obj == null ? 0 : obj.hashCode()); }This ensures that the general contract of Object.hashCode() is adhered to.
Returns: the hash code of this list
Parameters: o the object to search for
Returns: the least integer n such that o == null ? get(n) == null :
o.equals(get(n))
, or -1 if there is no such index
return listIterator(0)
.
Returns: an Iterator over the elements of this list, in order
See Also: modCount
Returns: the greatest integer n such that o == null ? get(n) == null
: o.equals(get(n))
, or -1 if there is no such index
Returns: a ListIterator over the elements of this list, in order, starting at the beginning
This implementation uses size(), get(int), set(int, Object), add(int, Object), and remove(int) of the backing list, and does not support remove, set, or add unless the list does. This implementation is fail-fast if you correctly maintain modCount.
Parameters: index the position, between 0 and size() inclusive, to begin the iteration from
Returns: a ListIterator over the elements of this list, in order, starting at index
Throws: IndexOutOfBoundsException if index < 0 || index > size()
See Also: modCount
Parameters: index the position within the list of the object to remove
Returns: the object that was removed
Throws: UnsupportedOperationException if this list does not support the remove operation IndexOutOfBoundsException if index < 0 || index >= size()
See Also: modCount
This implementation first checks for illegal or out of range arguments. It then obtains a ListIterator over the list using listIterator(fromIndex). It then calls next() and remove() on this iterator repeatedly, toIndex - fromIndex times.
Parameters: fromIndex the index, inclusive, to remove from. toIndex the index, exclusive, to remove to.
Throws: UnsupportedOperationException if the list does not support removing elements.
Parameters: index the position within this list of the element to be replaced o the object to replace it with
Returns: the object that was replaced
Throws: UnsupportedOperationException if this list does not support the set operation IndexOutOfBoundsException if index < 0 || index >= size() ClassCastException if o cannot be added to this list due to its type IllegalArgumentException if o cannot be added to this list for some other reason
This implementation returns a subclass of AbstractList. It stores, in private fields, the offset and size of the sublist, and the expected modCount of the backing list. If the backing list implements RandomAccess, the sublist will also.
The subclass's set(int, Object)
, get(int)
,
add(int, Object)
, remove(int)
,
addAll(int, Collection)
and
removeRange(int, int)
methods all delegate to the
corresponding methods on the backing abstract list, after
bounds-checking the index and adjusting for the offset. The
addAll(Collection c)
method merely returns addAll(size, c).
The listIterator(int)
method returns a "wrapper object"
over a list iterator on the backing list, which is created with the
corresponding method on the backing list. The iterator()
method merely returns listIterator(), and the size()
method
merely returns the subclass's size field.
All methods first check to see if the actual modCount of the backing list is equal to its expected value, and throw a ConcurrentModificationException if it is not.
Parameters: fromIndex the index that the returned list should start from (inclusive) toIndex the index that the returned list should go to (exclusive)
Returns: a List backed by a subsection of this list
Throws: IndexOutOfBoundsException if fromIndex < 0 || toIndex > size() IllegalArgumentException if fromIndex > toIndex
See Also: ConcurrentModificationException RandomAccess