summaryrefslogtreecommitdiff
path: root/libjava/java/util/AbstractSequentialList.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/util/AbstractSequentialList.java')
-rw-r--r--libjava/java/util/AbstractSequentialList.java47
1 files changed, 26 insertions, 21 deletions
diff --git a/libjava/java/util/AbstractSequentialList.java b/libjava/java/util/AbstractSequentialList.java
index 69bdc4ae220..07809da0c41 100644
--- a/libjava/java/util/AbstractSequentialList.java
+++ b/libjava/java/util/AbstractSequentialList.java
@@ -1,5 +1,5 @@
/* AbstractSequentialList.java -- List implementation for sequential access
- Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -7,7 +7,7 @@ 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
@@ -36,7 +36,8 @@ package java.util;
* Abstract superclass to make it easier to implement the List interface when
* backed by a sequential-access store, such as a linked list.
*/
-public abstract class AbstractSequentialList extends AbstractList {
+public abstract class AbstractSequentialList extends AbstractList
+{
/**
* Returns a ListIterator over the list, starting from position index.
@@ -57,27 +58,30 @@ public abstract class AbstractSequentialList extends AbstractList {
* @exception UnsupportedOperationException if the iterator returned by
* listIterator(index) does not support the add method.
*/
- public void add(int index, Object o) {
+ public void add(int index, Object o)
+ {
ListIterator i = listIterator(index);
i.add(o);
}
- public boolean addAll(int index, Collection c) {
- boolean changed = false;
+ public boolean addAll(int index, Collection c)
+ {
+ boolean modified = false;
Iterator ci = c.iterator();
+ int size = c.size();
ListIterator i = listIterator(index);
- while (ci.hasNext()) {
- i.add(ci.next());
- changed = true;
- }
- return changed;
+ for (int pos = 0; pos < size; pos++)
+ {
+ i.add(ci.next());
+ }
+ return (size > 0);
}
- public Object get(int index) {
+ public Object get(int index)
+ {
ListIterator i = listIterator(index);
- if (!i.hasNext()) {
+ if (index < 0 || index > size())
throw new IndexOutOfBoundsException();
- }
return i.next();
}
@@ -87,25 +91,26 @@ public abstract class AbstractSequentialList extends AbstractList {
*
* @return an Iterator over this List
*/
- public Iterator iterator() {
+ public Iterator iterator()
+ {
return listIterator();
}
- public Object remove(int index) {
+ public Object remove(int index)
+ {
ListIterator i = listIterator(index);
- if (!i.hasNext()) {
+ if (index < 0 || index > size())
throw new IndexOutOfBoundsException();
- }
Object removed = i.next();
i.remove();
return removed;
}
- public Object set(int index, Object o) {
+ public Object set(int index, Object o)
+ {
ListIterator i = listIterator(index);
- if (!i.hasNext()) {
+ if (index < 0 || index > size())
throw new IndexOutOfBoundsException();
- }
Object old = i.next();
i.set(o);
return old;