Home » openjdk-7 » java » util » [javadoc | source]
java.util
public interface: ListIterator [javadoc | source]

All Implemented Interfaces:
    Iterator

All Known Implementing Classes:
    ListItr, ListItr, ListItr, COWSubListIterator, COWIterator, ListItr, EmptyListIterator

An iterator for lists that allows the programmer to traverse the list in either direction, modify the list during iteration, and obtain the iterator's current position in the list. A {@code ListIterator} has no current element; its cursor position always lies between the element that would be returned by a call to {@code previous()} and the element that would be returned by a call to {@code next()}. An iterator for a list of length {@code n} has {@code n+1} possible cursor positions, as illustrated by the carets ({@code ^}) below:
                     Element(0)   Element(1)   Element(2)   ... Element(n-1)
cursor positions:  ^            ^            ^            ^                  ^
Note that the #remove and #set(Object) methods are not defined in terms of the cursor position; they are defined to operate on the last element returned by a call to #next or #previous() .

This interface is a member of the Java Collections Framework.

Method from java.util.ListIterator Summary:
add,   hasNext,   hasPrevious,   next,   nextIndex,   previous,   previousIndex,   remove,   set
Method from java.util.ListIterator Detail:
 public  void add(E e)
    Inserts the specified element into the list (optional operation). The element is inserted immediately before the element that would be returned by #next , if any, and after the element that would be returned by #previous , if any. (If the list contains no elements, the new element becomes the sole element on the list.) The new element is inserted before the implicit cursor: a subsequent call to {@code next} would be unaffected, and a subsequent call to {@code previous} would return the new element. (This call increases by one the value that would be returned by a call to {@code nextIndex} or {@code previousIndex}.)
 public boolean hasNext()
    Returns {@code true} if this list iterator has more elements when traversing the list in the forward direction. (In other words, returns {@code true} if #next would return an element rather than throwing an exception.)
 public boolean hasPrevious()
    Returns {@code true} if this list iterator has more elements when traversing the list in the reverse direction. (In other words, returns {@code true} if #previous would return an element rather than throwing an exception.)
 public E next()
    Returns the next element in the list and advances the cursor position. This method may be called repeatedly to iterate through the list, or intermixed with calls to #previous to go back and forth. (Note that alternating calls to {@code next} and {@code previous} will return the same element repeatedly.)
 public int nextIndex()
    Returns the index of the element that would be returned by a subsequent call to #next . (Returns list size if the list iterator is at the end of the list.)
 public E previous()
    Returns the previous element in the list and moves the cursor position backwards. This method may be called repeatedly to iterate through the list backwards, or intermixed with calls to #next to go back and forth. (Note that alternating calls to {@code next} and {@code previous} will return the same element repeatedly.)
 public int previousIndex()
    Returns the index of the element that would be returned by a subsequent call to #previous . (Returns -1 if the list iterator is at the beginning of the list.)
 public  void remove()
    Removes from the list the last element that was returned by #next or #previous (optional operation). This call can only be made once per call to {@code next} or {@code previous}. It can be made only if #add has not been called after the last call to {@code next} or {@code previous}.
 public  void set(E e)
    Replaces the last element returned by #next or #previous with the specified element (optional operation). This call can be made only if neither #remove nor #add have been called after the last call to {@code next} or {@code previous}.