Class ListIteratorWrapper<E>

  • All Implemented Interfaces:
    java.util.Iterator<E>, java.util.ListIterator<E>, OrderedIterator<E>, ResettableIterator<E>, ResettableListIterator<E>

    public class ListIteratorWrapper<E>
    extends java.lang.Object
    implements ResettableListIterator<E>
    Converts an Iterator into a ResettableListIterator. For plain Iterators this is accomplished by caching the returned elements. This class can also be used to simply add ResettableIterator functionality to a given ListIterator.

    The ListIterator interface has additional useful methods for navigation - previous() and the index methods. This class allows a regular Iterator to behave as a ListIterator. It achieves this by building a list internally of as the underlying iterator is traversed.

    The optional operations of ListIterator are not supported for plain Iterators.

    This class implements ResettableListIterator from Commons Collections 3.2.

    Since:
    2.1
    • Constructor Summary

      Constructors 
      Constructor Description
      ListIteratorWrapper​(java.util.Iterator<? extends E> iterator)
      Constructs a new ListIteratorWrapper that will wrap the given iterator.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void add​(E obj)
      Throws UnsupportedOperationException unless the underlying Iterator is a ListIterator.
      boolean hasNext()
      Returns true if there are more elements in the iterator.
      boolean hasPrevious()
      Returns true if there are previous elements in the iterator.
      E next()
      Returns the next element from the iterator.
      int nextIndex()
      Returns the index of the next element.
      E previous()
      Returns the previous element.
      int previousIndex()
      Returns the index of the previous element.
      void remove()
      Throws UnsupportedOperationException if previous() has ever been called.
      void reset()
      Resets this iterator back to the position at which the iterator was created.
      void set​(E obj)
      Throws UnsupportedOperationException unless the underlying Iterator is a ListIterator.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface java.util.Iterator

        forEachRemaining
    • Constructor Detail

      • ListIteratorWrapper

        public ListIteratorWrapper​(java.util.Iterator<? extends E> iterator)
        Constructs a new ListIteratorWrapper that will wrap the given iterator.
        Parameters:
        iterator - the iterator to wrap
        Throws:
        java.lang.NullPointerException - if the iterator is null
    • Method Detail

      • add

        public void add​(E obj)
                 throws java.lang.UnsupportedOperationException
        Throws UnsupportedOperationException unless the underlying Iterator is a ListIterator.
        Specified by:
        add in interface java.util.ListIterator<E>
        Parameters:
        obj - the object to add
        Throws:
        java.lang.UnsupportedOperationException - if the underlying iterator is not of type ListIterator
      • hasNext

        public boolean hasNext()
        Returns true if there are more elements in the iterator.
        Specified by:
        hasNext in interface java.util.Iterator<E>
        Specified by:
        hasNext in interface java.util.ListIterator<E>
        Returns:
        true if there are more elements
      • hasPrevious

        public boolean hasPrevious()
        Returns true if there are previous elements in the iterator.
        Specified by:
        hasPrevious in interface java.util.ListIterator<E>
        Specified by:
        hasPrevious in interface OrderedIterator<E>
        Returns:
        true if there are previous elements
      • next

        public E next()
               throws java.util.NoSuchElementException
        Returns the next element from the iterator.
        Specified by:
        next in interface java.util.Iterator<E>
        Specified by:
        next in interface java.util.ListIterator<E>
        Returns:
        the next element from the iterator
        Throws:
        java.util.NoSuchElementException - if there are no more elements
      • nextIndex

        public int nextIndex()
        Returns the index of the next element.
        Specified by:
        nextIndex in interface java.util.ListIterator<E>
        Returns:
        the index of the next element
      • previous

        public E previous()
                   throws java.util.NoSuchElementException
        Returns the previous element.
        Specified by:
        previous in interface java.util.ListIterator<E>
        Specified by:
        previous in interface OrderedIterator<E>
        Returns:
        the previous element
        Throws:
        java.util.NoSuchElementException - if there are no previous elements
      • previousIndex

        public int previousIndex()
        Returns the index of the previous element.
        Specified by:
        previousIndex in interface java.util.ListIterator<E>
        Returns:
        the index of the previous element
      • remove

        public void remove()
                    throws java.lang.UnsupportedOperationException
        Throws UnsupportedOperationException if previous() has ever been called.
        Specified by:
        remove in interface java.util.Iterator<E>
        Specified by:
        remove in interface java.util.ListIterator<E>
        Throws:
        java.lang.UnsupportedOperationException - always
      • set

        public void set​(E obj)
                 throws java.lang.UnsupportedOperationException
        Throws UnsupportedOperationException unless the underlying Iterator is a ListIterator.
        Specified by:
        set in interface java.util.ListIterator<E>
        Parameters:
        obj - the object to set
        Throws:
        java.lang.UnsupportedOperationException - if the underlying iterator is not of type ListIterator
      • reset

        public void reset()
        Resets this iterator back to the position at which the iterator was created.
        Specified by:
        reset in interface ResettableIterator<E>
        Since:
        3.2