Java Reference
In-Depth Information
Defining an Iterator Class
In Display 15.17, we have rewritten the class LinkedList2 from Display 15.7 so that it
has an inner class for iterators and a method iterator( ) that returns an iterator for
its calling object. We have made the inner class List2Iterator public so that we can
have variables of type List2Iterator outside the class LinkedList2 , but we do not
otherwise plan to use the inner class List2Iterator outside of the outer class
LinkedList2 .
Use of iterators for the class LinkedList2 is illustrated by the program in Display
15.18. Note that, given a linked list named list , an iterator for list is produced by
the method iterator as follows:
LinkedList2.List2Iterator i = list.iterator( );
The iterator i produced in this way can only be used with the linked list named list .
Be sure to notice that outside of the class, the type name for the inner class iterator
must include the name of the outer class as well as the inner iterator class. The class
name for one of these iterators is
LinkedList2.List2Iterator
Display 15.17 A Linked List with an Iterator (part 1 of 3)
1
import java.util.NoSuchElementException;
This is the same as the class in Displays 15.7 and
15.11 except that the List2Iterator inner class
and the iterator( ) method have been added.
2 public class LinkedList2
3{
4
private class Node
5
{
6
private String item;
7
private Node link;
< The rest of the definition of the Node inner class is given in Display 15.7. >
8
} //End of Node inner class
9
/**
10
If the list is altered any iterators should invoke restart or
11
the iterator's behavior may not be as desired.
12
*/
An inner class for iterators for
LinkedList2 .
13
public class List2Iterator
14
{
15
private Node position;
16
private Node previous; //previous value of position
(continued)
Search WWH ::




Custom Search