Java Reference
In-Depth Information
The general idea of next and previous is clear, but we need to make it precise if you are
to understand the next( ) and previous( ) methods of the ListIterator<T> interface.
Every ListIterator<T> has a position marker in the list known as the cursor . If the list
has n elements, they are numbered by indices 0 through n -1, but there are n +1 cursor
positions, as indicated in Display 16.16. When next( ) is invoked, the element immedi-
ately following the cursor position is returned and the cursor is moved to the next cursor
position. When previous( ) is invoked, the element immediately before the cursor posi-
tion is returned, and the cursor is moved back to the preceding cursor position.
cursor
The ListIterator<T> Interface
The ListIterator<T> interface extends the Iterator<T> interface. The ListIterator<T>
interface differs from the Iterator<T> interface by adding the following abilities: a
ListIterator<T> can move in either direction along the list of elements in the collec-
tion, and a ListIterator<T> has methods, such as set and add , that can be used to
change the elements in the collection.
Display 16.16 ListIterator<T> Cursor Positions
List
element 0 element 1 element 2 ... element n-1
Cursor positions
The default initial cursor position is the leftmost one.
PITFALL: next Can Return a Reference
If i is an iterator, then i.next( ) returns an element of the collection that created i ,
but there are two senses of “return an element.”
1. The invocation i.next( ) could return a copy of the element in the collection
(for example, using a copy constructor or a clone method).
2. Alternatively, i.next( ) could return a reference to the element in the collection.
In case (1), modifying i.next( ) will not change the element in the collection (pro-
vided the copy was a deep copy). In case (2), modifying i.next( ) will change the ele-
ment in the collection. The APIs for both the Iterator<T> and ListIterator<T>
interfaces are vague on whether you should follow policy (1) or (2), but the iterators
(continued)
 
Search WWH ::




Custom Search