return type narrowing git-svn-id: https://svn.apache.org/repos/asf/commons/proper/collections/branches/collections_jdk5_branch@751869 13f79535-47bb-0310-9956-ffa450edef68
Project: http://git-wip-us.apache.org/repos/asf/commons-collections/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-collections/commit/68e12b97 Tree: http://git-wip-us.apache.org/repos/asf/commons-collections/tree/68e12b97 Diff: http://git-wip-us.apache.org/repos/asf/commons-collections/diff/68e12b97 Branch: refs/heads/collections_jdk5_branch Commit: 68e12b979ee37045a152805e4165acaca896a585 Parents: 783aa51 Author: Matthew Jason Benson <mben...@apache.org> Authored: Mon Mar 9 22:10:00 2009 +0000 Committer: Matthew Jason Benson <mben...@apache.org> Committed: Mon Mar 9 22:10:00 2009 +0000 ---------------------------------------------------------------------- .../commons/collections/set/ListOrderedSet.java | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-collections/blob/68e12b97/src/java/org/apache/commons/collections/set/ListOrderedSet.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/commons/collections/set/ListOrderedSet.java b/src/java/org/apache/commons/collections/set/ListOrderedSet.java index beb3990..82ed03c 100644 --- a/src/java/org/apache/commons/collections/set/ListOrderedSet.java +++ b/src/java/org/apache/commons/collections/set/ListOrderedSet.java @@ -21,8 +21,10 @@ import java.util.Collection; import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.ListIterator; import java.util.Set; +import org.apache.commons.collections.OrderedIterator; import org.apache.commons.collections.iterators.AbstractIteratorDecorator; import org.apache.commons.collections.list.UnmodifiableList; @@ -171,8 +173,8 @@ public class ListOrderedSet<E> extends AbstractSerializableSetDecorator<E> imple setOrder.clear(); } - public Iterator<E> iterator() { - return new OrderedSetIterator<E>(setOrder.iterator(), collection); + public OrderedIterator<E> iterator() { + return new OrderedSetIterator<E>(setOrder.listIterator(), collection); } public boolean add(E object) { @@ -279,14 +281,15 @@ public class ListOrderedSet<E> extends AbstractSerializableSetDecorator<E> imple /** * Internal iterator handle remove. */ - static class OrderedSetIterator<E> extends AbstractIteratorDecorator<E> { + static class OrderedSetIterator<E> extends AbstractIteratorDecorator<E> implements OrderedIterator<E> { /** Object we iterate on */ protected final Collection<E> set; + /** Last object retrieved */ protected E last; - private OrderedSetIterator(Iterator<E> iterator, Collection<E> set) { + private OrderedSetIterator(ListIterator<E> iterator, Collection<E> set) { super(iterator); this.set = set; } @@ -301,6 +304,15 @@ public class ListOrderedSet<E> extends AbstractSerializableSetDecorator<E> imple iterator.remove(); last = null; } + + public boolean hasPrevious() { + return ((ListIterator<E>) iterator).hasPrevious(); + } + + public E previous() { + last = ((ListIterator<E>) iterator).previous(); + return last; + } } }