## org.apache.commons.collections.iterators
Class ReverseListIterator

    java.lang.Object
      org.apache.commons.collections.iterators.ReverseListIterator

All Implemented Interfaces:
  java.util.Iterator, java.util.ListIterator, ResettableIterator, ResettableListIterator

    public class ReverseListIterator

extends java.lang.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 13:33:15 +0100 (Thu, 10 Apr 2008) $
Author:
  Serge Knystautas, Stephen Colebourne

Constructor Summary
`ReverseListIterator(java.util.List list)` Constructor that wraps a list.

Method Summary
`void` `add(java.lang.Object 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.
`java.lang.Object` `next()` Gets the next element.
`int` `nextIndex()` Gets the index of the next element.
`java.lang.Object` `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(java.lang.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`

Constructor Detail

### ReverseListIterator

    public ReverseListIterator(java.util.List 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`
  Specified by:
    `hasNext` in interface `java.util.ListIterator`
  Returns:
    true if there is another element

### next

    public java.lang.Object next()

  Gets the next element. The next element is the previous in the list.

  Specified by:
    `next` in interface `java.util.Iterator`
  Specified by:
    `next` in interface `java.util.ListIterator`
  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`
  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`
  Returns:
    true if there is a previous element

### previous

    public java.lang.Object previous()

  Gets the previous element. The next element is the previous in the list.

  Specified by:
    `previous` in interface `java.util.ListIterator`
  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`
  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`
  Specified by:
    `remove` in interface `java.util.ListIterator`
  Throws:
    `java.lang.UnsupportedOperationException` - if the list is unmodifiable
    `java.lang.IllegalStateException` - if there is no element to remove

### set

    public void set(java.lang.Object obj)

  Replaces the last returned element.

  Specified by:
    `set` in interface `java.util.ListIterator`
  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(java.lang.Object obj)

  Adds a new element to the list between the next and previous elements.

  Specified by:
    `add` in interface `java.util.ListIterator`
  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`
  Specified by:
    `reset` in interface `ResettableListIterator`

Copyright © 2001-2008 The Apache Software Foundation. All Rights Reserved.