Class ReverseListIterator<E>

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

    public class ReverseListIterator<E>
    extends java.lang.Object
    implements ResettableListIterator<E>
    Iterates backwards through a List, starting with the last element and continuing to the first. This is useful for looping around a list in reverse order without needing to actually reverse the list.

    The first call to next() will return the last element from the list, and so on. The hasNext() method works in concert with the next() method as expected. However, the nextIndex() method returns the correct index in the list, thus it starts high and reduces as the iteration continues. The previous methods work similarly.

    Since:
    3.2
    • Constructor Summary

      Constructors 
      Constructor Description
      ReverseListIterator​(java.util.List<E> list)
      Constructor that wraps a list.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void add​(E obj)
      Adds a new element to the list between the next and previous elements.
      boolean hasNext()
      Checks whether there is another element.
      boolean hasPrevious()
      Checks whether there is a previous element.
      E next()
      Gets the next element.
      int nextIndex()
      Gets the index of the next element.
      E previous()
      Gets the previous element.
      int previousIndex()
      Gets the index of the previous element.
      void remove()
      Removes the last returned element.
      void reset()
      Resets the iterator back to the start (which is the end of the list as this is a reversed iterator)
      void set​(E obj)
      Replaces the last returned element.
      • Methods inherited from class java.lang.Object

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

        forEachRemaining
    • Constructor Detail

      • ReverseListIterator

        public ReverseListIterator​(java.util.List<E> list)
        Constructor that wraps a list.
        Parameters:
        list - the list to create a reversed iterator for
        Throws:
        java.lang.NullPointerException - if the list is null
    • Method Detail

      • hasNext

        public boolean hasNext()
        Checks whether there is another element.
        Specified by:
        hasNext in interface java.util.Iterator<E>
        Specified by:
        hasNext in interface java.util.ListIterator<E>
        Returns:
        true if there is another element
      • next

        public E next()
        Gets the next element. The next element is the previous in the list.
        Specified by:
        next in interface java.util.Iterator<E>
        Specified by:
        next in interface java.util.ListIterator<E>
        Returns:
        the next element in the iterator
      • nextIndex

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

        public boolean hasPrevious()
        Checks whether there is a previous element.
        Specified by:
        hasPrevious in interface java.util.ListIterator<E>
        Specified by:
        hasPrevious in interface OrderedIterator<E>
        Returns:
        true if there is a previous element
      • previous

        public E previous()
        Gets the previous element. The next element is the previous in the list.
        Specified by:
        previous in interface java.util.ListIterator<E>
        Specified by:
        previous in interface OrderedIterator<E>
        Returns:
        the previous element in the iterator
      • previousIndex

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

        public void remove()
        Removes the last returned element.
        Specified by:
        remove in interface java.util.Iterator<E>
        Specified by:
        remove in interface java.util.ListIterator<E>
        Throws:
        java.lang.UnsupportedOperationException - if the list is unmodifiable
        java.lang.IllegalStateException - if there is no element to remove
      • set

        public void set​(E obj)
        Replaces the last returned element.
        Specified by:
        set in interface java.util.ListIterator<E>
        Parameters:
        obj - the object to set
        Throws:
        java.lang.UnsupportedOperationException - if the list is unmodifiable
        java.lang.IllegalStateException - if the iterator is not in a valid state for set
      • add

        public void add​(E obj)
        Adds a new element to the list between the next and previous elements.
        Specified by:
        add in interface java.util.ListIterator<E>
        Parameters:
        obj - the object to add
        Throws:
        java.lang.UnsupportedOperationException - if the list is unmodifiable
        java.lang.IllegalStateException - if the iterator is not in a valid state for set
      • reset

        public void reset()
        Resets the iterator back to the start (which is the end of the list as this is a reversed iterator)
        Specified by:
        reset in interface ResettableIterator<E>