Class ReverseListIterator

java.lang.Object
org.apache.commons.collections.iterators.ReverseListIterator
All Implemented Interfaces:
Iterator, ListIterator, ResettableIterator, ResettableListIterator

public class ReverseListIterator extends Object implements ResettableListIterator
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:
Commons Collections 3.2
Version:
$Revision: $ $Date: 2008-04-10 14:33:15 +0200 (Thu, 10 Apr 2008) $
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private ListIterator
    The list iterator being wrapped.
    private final List
    The list being wrapped.
    private boolean
    Flag to indicate if updating is possible at the moment.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructor that wraps a list.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    add(Object obj)
    Adds a new element to the list between the next and previous elements.
    boolean
    Checks whether there is another element.
    boolean
    Checks whether there is a previous element.
    Gets the next element.
    int
    Gets the index of the next element.
    Gets the previous element.
    int
    Gets the index of the previous element.
    void
    Removes the last returned element.
    void
    Resets the iterator back to the start (which is the end of the list as this is a reversed iterator)
    void
    set(Object obj)
    Replaces the last returned element.

    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
  • Field Details

    • list

      private final List list
      The list being wrapped.
    • iterator

      private ListIterator iterator
      The list iterator being wrapped.
    • validForUpdate

      private boolean validForUpdate
      Flag to indicate if updating is possible at the moment.
  • Constructor Details

    • ReverseListIterator

      public ReverseListIterator(List list)
      Constructor that wraps a list.
      Parameters:
      list - the list to create a reversed iterator for
      Throws:
      NullPointerException - if the list is null
  • Method Details

    • hasNext

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

      public Object next()
      Gets the next element. The next element is the previous in the list.
      Specified by:
      next in interface Iterator
      Specified by:
      next in interface ListIterator
      Returns:
      the next element in the iterator
    • nextIndex

      public int nextIndex()
      Gets the index of the next element.
      Specified by:
      nextIndex in interface ListIterator
      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 ListIterator
      Returns:
      true if there is a previous element
    • previous

      public Object previous()
      Gets the previous element. The next element is the previous in the list.
      Specified by:
      previous in interface ListIterator
      Returns:
      the previous element in the iterator
    • previousIndex

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

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

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

      public void add(Object obj)
      Adds a new element to the list between the next and previous elements.
      Specified by:
      add in interface ListIterator
      Parameters:
      obj - the object to add
      Throws:
      UnsupportedOperationException - if the list is unmodifiable
      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
      Specified by:
      reset in interface ResettableListIterator