iterator() and hasNext() in Java

By: Baski  

Before you can access a collection through an iterator, you must obtain one. Each of thecollection classes provides an iterator() method that returns an iterator to the start of the collection. By using this iterator object, you can access each element in the collection, one element at a time. In general, to use an iterator to cycle through the contents of a collection, follow these steps:
  1. Obtain an iterator to the start of the collection by calling the collection's iterator( ) method.
  2. Set up a loop that makes a call to hasNext( ). Have the loop iterate as long as hasNext( ) returns true.
  3. Within the loop, obtain each element by calling next( ).

For collections that implement List, you can also obtain an iterator by calling ListIterator. As explained, a list iterator gives you the ability to access the collection in either the forward or backward direction and lets you modify an element. Otherwise, ListIterator is used just like Iterator.

Here is an example that implements these steps, demonstrating both Iterator and ListIterator. It uses an ArrayList object, but the general principles apply to any type of collection. Of course, ListIterator is available only to those collections that implement the List interface.

// Demonstrate iterators.
import java.util.*;
class IteratorDemo {
public static void main(String args[]) {
// create an array list
ArrayList al = new ArrayList();
// add elements to the array list
// use iterator to display contents of al
System.out.print("Original contents of al: ");
Iterator itr = al.iterator();
while(itr.hasNext()) {
Object element =;
System.out.print(element + " ");
// modify objects being iterated
ListIterator litr = al.listIterator();
while(litr.hasNext()) {
Object element =;
litr.set(element + "+");
System.out.print("Modified contents of al: ");
itr = al.iterator();
while(itr.hasNext()) {
Object element =;
System.out.print(element + " ");
// now, display the list backwards
System.out.print("Modified list backwards: ");
while(litr.hasPrevious()) {
Object element = litr.previous();
System.out.print(element + " ");

The output is shown here:

Original contents of al: C A E B D F
Modified contents of al: C+ A+ E+ B+ D+ F+
Modified list backwards: F+ D+ B+ E+ A+ C+

Pay special attention to how the list is displayed in reverse. After the list is modified, litr points to the end of the list. (Remember, litr.hasNext( ) returns false when the end of the list has been reached.) To traverse the list in reverse, the program continues to use litr, butthis time it checks to see whether it has a previous element. As long as it does, that element is obtained and displayed.

Archived Comments

1. Copied From harvard schildt
View Tutorial          By: Saket Kumar at 2017-04-28 04:33:37

2. Real friends it is very useful for java.
View Tutorial          By: Balaji VM at 2017-03-16 09:05:51

3. Object element = litr.previous();
what this code specify?

View Tutorial          By: sumit at 2016-03-09 09:31:55

4. Thanks for help
View Tutorial          By: Asha at 2014-12-20 08:25:48

5. very easy and simple program..
need minor documentation but still it is good i mean very goo

View Tutorial          By: Metal at 2014-05-07 10:31:04

6. really friends its very useful site for java beginners i hope u guys can have some help form this si
View Tutorial          By: shekhar at 2011-05-21 03:04:32

7. these tutorials are very simple to understand. I am thankful to java-sample. sagar
View Tutorial          By: sagar at 2009-05-09 23:31:01

Most Viewed Articles (in Java )

Latest Articles (in Java)

Comment on this tutorial