Index (Frames) | Index (No Frames) | Package | Package Tree | Tree
java.util

Class AbstractSequentialList

java.lang.Object
|
+--java.util.AbstractCollection
   |
   +--java.util.AbstractList
      |
      +--java.util.AbstractSequentialList


public abstract class AbstractSequentialList

extends AbstractList

Abstract superclass to make it easier to implement the List interface when backed by a sequential-access store, such as a linked list. For random access data, use AbstractList. This class implements the random access methods (get, set, add, and remove) atop the list iterator, opposite of AbstractList's approach of implementing the iterator atop random access.

To implement a list, you need an implementation for size() and listIterator. With just hasNext, next, hasPrevious, previous, nextIndex, and previousIndex, you have an unmodifiable list. For a modifiable one, add set, and for a variable-size list, add add and remove.

The programmer should provide a no-argument constructor, and one that accepts another Collection, as recommended by the Collection interface. Unfortunately, there is no way to enforce this in Java.

Since:Authors:See Also:

Constructor Summary

AbstractSequentialList()

The main constructor, for use by subclasses.

Method Summary

voidadd(int index, java.lang.Object o)

Insert an element into the list at a given position (optional operation).
booleanaddAll(int index, java.util.Collection c)

Insert the contents of a collection into the list at a given position (optional operation).
java.lang.Objectget(int index)

Get the element at a given index in this list.
java.util.Iteratoriterator()

Obtain an Iterator over this list, whose sequence is the list order.
java.util.ListIteratorlistIterator(int index)

Returns a ListIterator over the list, starting from position index.
java.lang.Objectremove(int index)

Remove the element at a given position in this list (optional operation).
java.lang.Objectset(int index, java.lang.Object o)

Replace an element of this list with another object (optional operation).

Constructor Details

AbstractSequentialList

protected AbstractSequentialList()

The main constructor, for use by subclasses.


Method Details

add

public void add(int index, java.lang.Object o)

Insert an element into the list at a given position (optional operation). This shifts all existing elements from that position to the end one index to the right. This version of add has no return, since it is assumed to always succeed if there is no exception. This iteration uses listIterator(index).add(o).

Parameters:

Throws:


addAll

public boolean addAll(int index, java.util.Collection c)

Insert the contents of a collection into the list at a given position (optional operation). Shift all elements at that position to the right by the number of elements inserted. This operation is undefined if this list is modified during the operation (for example, if you try to insert a list into itself).

This implementation grabs listIterator(index), then proceeds to use add for each element returned by c's iterator. Sun's online specs are wrong, claiming that this also calls next(): listIterator.add() correctly skips the added element.

Parameters:

Returns:

Throws:

See Also:


get

public Object get(int index)

Get the element at a given index in this list. This implementation returns listIterator(index).next().

Parameters:

Returns:

Throws:


iterator

public Iterator iterator()

Obtain an Iterator over this list, whose sequence is the list order. This implementation returns listIterator().

Returns:


listIterator

public ListIterator listIterator(int index)

Returns a ListIterator over the list, starting from position index. Subclasses must provide an implementation of this method.

Parameters:

Returns:

Throws:


remove

public Object remove(int index)

Remove the element at a given position in this list (optional operation). Shifts all remaining elements to the left to fill the gap. This implementation uses listIterator(index) and ListIterator.remove().

Parameters:

Returns:

Throws:


set

public Object set(int index, java.lang.Object o)

Replace an element of this list with another object (optional operation). This implementation uses listIterator(index) and ListIterator.set(o).

Parameters:

Returns:

Throws: