Here is code using ListIterator. This works properly in the forward direction, but when it iterates backward it goes into an infinite loop.
Why is this happening?
package iteratordemo;
import java.util.*;
public class IteratorDemo {
public static void main(String[] args) {
ArrayList<String> al=new ArrayList<String>();
al.add("a");
al.add("b");
al.add("c");
al.add("d");
al.add("e");
System.out.println("original content of al:" +al);
Iterator<String> itr=al.iterator();
while(itr.hasNext()){
String element=itr.next();
System.out.println(element + " ");
}
System.out.println();
// modify the object being iterated
ListIterator litr=al.listIterator();
while(litr.hasNext()){
Object element = litr.next();
litr.set(element + "+");
System.out.println("modified content of al: " );
itr=al.iterator();
while(itr.hasNext())
{
element=itr.next();
System.out.println(element + " ");
}
System.out.println();
// now display the list backward
// while returning in backward direction it goes into infinite loop
System.out.println("modified list backwards:");
while(litr.hasPrevious()){
element= litr.previous();
System.out.println(element + " ");
}
System.out.println();
}
}
}