java.util
Class AbstractSequentialList
- Collection, List
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.
- 1.2
Collection
, List
, AbstractList
, AbstractCollection
, ListIterator
, LinkedList
void | add(int index, Object o) - Insert an element into the list at a given position (optional operation).
|
boolean | addAll(int index, Collection c) - Insert the contents of a collection into the list at a given position
(optional operation).
|
Object | 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.
|
ListIterator | listIterator(int index) - Returns a ListIterator over the list, starting from position index.
|
Object | remove(int index) - Remove the element at a given position in this list (optional operation).
|
Object | set(int index, Object 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 |
add , addAll , clear , contains , containsAll , isEmpty , iterator , remove , removeAll , retainAll , size , toArray , toArray , toString |
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait |
add
public void add(int index,
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).
- add in interface List
- add in interface AbstractList
index
- the location to insert the itemo
- the object to insert
UnsupportedOperationException
- if this list does not support the
add operationIndexOutOfBoundsException
- if index < 0 || index > size()ClassCastException
- if o cannot be added to this list due to its
typeIllegalArgumentException
- if o cannot be added to this list for
some other reason.NullPointerException
- if o is null and the list does not permit
the addition of null values.
addAll
public boolean addAll(int index,
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.
- addAll in interface List
- addAll in interface AbstractList
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
UnsupportedOperationException
- if this list does not support the
addAll operationIndexOutOfBoundsException
- if index < 0 || index > size()ClassCastException
- if some element of c cannot be added to this
list due to its typeIllegalArgumentException
- if some element of c cannot be added
to this list for some other reasonNullPointerException
- if the specified collection is nullNullPointerException
- if an object, o, in c is null and the list
does not permit the addition of null values.
add(int,Object)
get
public Object get(int index)
Get the element at a given index in this list. This implementation
returns listIterator(index).next().
- get in interface List
- get in interface AbstractList
index
- the index of the element to be returned
- the element at index index in this list
IndexOutOfBoundsException
- if index < 0 || index >= size()
iterator
public Iterator iterator()
Obtain an Iterator over this list, whose sequence is the list order. This
implementation returns listIterator().
- iterator in interface List
- iterator in interface Collection
- iterator in interface AbstractList
- an Iterator over the elements of this list, in order
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().
- remove in interface List
- remove in interface AbstractList
index
- the position within the list of the object to remove
- the object that was removed
UnsupportedOperationException
- if this list does not support the
remove operationIndexOutOfBoundsException
- if index < 0 || index >= size()
AbstractSequentialList.java -- List implementation for sequential access
Copyright (C) 1998, 1999, 2000, 2001, 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.