import java.util.Iterator;
public class IteratorTest
{
public static void main(String[] args)
{
// make a stack
Stack<Integer> stack = new Stack<Integer>();
// add some numbers
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
// two options to go though, i.e. to process, all items in the stack
// Option 1: enhanced for loop -- *implict/hidden* use of the iterator
for (Integer value : stack) {
System.out.println(value); // do something with curr value
}
// Option 2: same effect but with a while loop -- *explicit* use of iterator
Iterator<Integer> iter = stack.iterator();
while (iter.hasNext()) {
Integer value = iter.next(); // _gives_ value, _moves_ iterator
System.out.println(value); // do something with current value
}
//---------------------------------------------------------------------
// Java will internally translate/rewrite a for-each version (Option 1)
// into the version with while loop (Option 2)
//---------------------------------------------------------------------
}
}