Hier ist ein Code über Listiterator. Arbeite richtig in Vorwärtsrichtung, aber wenn es rückwärts iteriert, geht es in Endlosschleife. nach jedem element drucke ich ein plus und am ende wird eine liste erzeugt. funktioniert gut, wenn Rückwärtsiteration nicht enthalten ist, aber Problem mit Rückwärts. warum es passiert, weiß ich nicht?Rückwärtsliste Iteration mit Iterator
package iteratordemo;
import java.util.*;
/**
*
* @author New
*/
public class IteratorDemo {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
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();
}
}
}
Es scheint, dass Sie für jeden Schritt gehen Sie in Ihrer Liste Iterator mit dem "nächsten" Anruf gehen Sie zurück zum Anfang der Liste mit dem "vorherigen" Anruf. Daher wird die Liste niemals durchlaufen, da der Cursor die ganze Zeit vorwärts und rückwärts läuft. Sie können die Rückwärtsiteration nach Abschluss der Vorwärtsiteration in Betracht ziehen. – elfwyn