java.util
Class AbstractSequentialList<E>
- Collection<E>, Iterable<E>, List<E>
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.
void | add(int index, E o) - Insert an element into the list at a given position (optional operation).
|
boolean | addAll(int index, E> c) - Insert the contents of a collection into the list at a given position
(optional operation).
|
E | get(int index) - Get the element at a given index in this list.
|
Iterator | iterator() - Obtain an Iterator over this list, whose sequence is the list order.
|
abstract ListIterator | listIterator(int index) - Returns a ListIterator over the list, starting from position index.
|
E | remove(int index) - Remove the element at a given position in this list (optional operation).
|
E | set(int index, E o) - Replace an element of this list with another object (optional operation).
|
add , add , addAll , clear , equals , get , hashCode , indexOf , iterator , lastIndexOf , listIterator , listIterator , remove , removeRange , set , subList |
T[] toArray , add , addAll , clear , contains , containsAll , isEmpty , iterator , remove , removeAll , retainAll , size , toArray , toString |
clone , equals , extends Object> getClass , finalize , hashCode , notify , notifyAll , toString , wait , wait , wait |
add
public void add(int index,
E 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).
- add in interface List<E>
- add in interface AbstractList<E>
index
- the location to insert the itemo
- the object to insert
addAll
public boolean addAll(int index,
E> 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.
- addAll in interface List<E>
- addAll in interface AbstractList<E>
index
- the location to insert the collectionc
- the collection to insert
- true if the list was modified by this action, that is, if c is
non-empty
get
public E get(int index)
Get the element at a given index in this list. This implementation
returns listIterator(index).next().
- get in interface List<E>
- get in interface AbstractList<E>
index
- the index of the element to be returned
- the element at index index in this list
listIterator
public abstract ListIterator listIterator(int index)
Returns a ListIterator over the list, starting from position index.
Subclasses must provide an implementation of this method.
- listIterator in interface List<E>
- listIterator in interface AbstractList<E>
index
- the starting position of the list
remove
public E 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().
- remove in interface List<E>
- remove in interface AbstractList<E>
index
- the position within the list of the object to remove
- the object that was removed
set
public E set(int index,
E o)
Replace an element of this list with another object (optional operation).
This implementation uses listIterator(index) and ListIterator.set(o).
- set in interface List<E>
- set in interface AbstractList<E>
index
- the position within this list of the element to be replacedo
- the object to replace it with
- the object that was replaced
AbstractSequentialList.java -- List implementation for sequential access
Copyright (C) 1998, 1999, 2000, 2001, 2004, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version.