From 0beba6cafae63f9b6ed605fd8b9aa20f6ca67738 Mon Sep 17 00:00:00 2001 From: Eric Scharff Date: Wed, 26 Sep 2007 09:48:59 -0600 Subject: [PATCH] ArrayList now implements ListIterator (for reverse traversals of lists) --- classpath/java/util/ArrayList.java | 4 ++++ classpath/java/util/Collections.java | 22 ++++++++++++++++++++-- classpath/java/util/ListIterator.java | 6 ++++++ 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 classpath/java/util/ListIterator.java diff --git a/classpath/java/util/ArrayList.java b/classpath/java/util/ArrayList.java index 3589f648ca..c069cb116a 100644 --- a/classpath/java/util/ArrayList.java +++ b/classpath/java/util/ArrayList.java @@ -154,4 +154,8 @@ public class ArrayList implements List { public Iterator iterator() { return new Collections.ArrayListIterator(this); } + + public ListIterator listIterator(int index) { + return new Collections.ArrayListIterator(this, index); + } } diff --git a/classpath/java/util/Collections.java b/classpath/java/util/Collections.java index 732df1f706..bbc4e60b3f 100644 --- a/classpath/java/util/Collections.java +++ b/classpath/java/util/Collections.java @@ -102,13 +102,31 @@ public class Collections { } } - static class ArrayListIterator implements Iterator { + static class ArrayListIterator implements ListIterator { private final List list; private boolean canRemove = false; - private int index = -1; + private int index; public ArrayListIterator(List list) { + this(list, 0); + } + + public ArrayListIterator(List list, int index) { this.list = list; + this.index = index - 1; + } + + public boolean hasPrevious() { + return index >= 0; + } + + public T previous() { + if (hasPrevious()) { + canRemove = true; + return list.get(index--); + } else { + throw new NoSuchElementException(); + } } public T next() { diff --git a/classpath/java/util/ListIterator.java b/classpath/java/util/ListIterator.java new file mode 100644 index 0000000000..126a00b716 --- /dev/null +++ b/classpath/java/util/ListIterator.java @@ -0,0 +1,6 @@ +package java.util; + +public interface ListIterator extends Iterator { + public boolean hasPrevious(); + public E previous(); +}