2016-08-20 1 views
0

Wie Sie einzelne Iterator-Referenz zum Anzeigen von Daten aus ArrayList in Java verwenden.So verwenden Sie einzelne Iterator-Referenz zum Anzeigen von Daten aus ArrayList in Java

hier ist mein Code,

String names="Nachan,Ram,Ganesh,Kumar,Prasanna"; 
    ArrayList<String> list=new ArrayList<String>(); 

    String[] nameList=names.split(","); 
    for(int i=0; i<nameList.length-1; i++) 
     list.add(nameList[i]); 

    Iterator<String> nameitr=list.iterator(); 
    while(nameitr.hasNext()) 
     System.out.println(nameitr.next()); 

    while(nameitr.hasNext()) //here error occurs 
     System.out.println(itrall.next()); 

/* why here i can't use the same or another iterator reference for the particular list */ 
+0

Zuerst würde Ihr Programm wegen des Verweises auf eine nicht existierende Variable 'itrall' nicht kompilieren.Zweitens würde die Zeile mit der Bezeichnung 'here error accept' keinen Fehler verursachen,' hasNext() 'würde einfach 'false' zurückgeben, weil Sie die gesamte Liste in der vorherigen Schleife bereits durchlaufen haben, so dass der Iterator nicht mehr hat Elemente, um Ihnen zu geben, deshalb können Sie es nicht wiederverwenden. –

+0

Vielen Dank Andrew Lygin. Also, gibt es eine andere Möglichkeit, sie alle vom Start Index mit Iterator –

+0

Sie müssen einen anderen Iterator auf der gleichen Liste erstellen. –

Antwort

0

Wenn die unter Anweisung ausführt, ein Iterator nameitr wird über das Arraylist-Objekt list erstellt werden.

Iterator<String> nameitr=list.iterator(); 

wenn wir nameitr.next() tun, nameitr das erste Element oder das Arraylist zeigen. Entsprechend wird die Schleife ausgeführt, bis nameitr.hasNext() falsch ist. Das heißt nameitr zeigt auf das letzte Element oder die Arraylist und es sind keine Elemente mehr in der Arraylist zu sehen.

Da das nameitr bereits das letzte Element von Arraylist anzeigt, gibt die untere Zeile des Codes false zurück.

while(nameitr.hasNext()) //here error occurs

Um dies zu vermeiden, müssen wir einen neuen Iterator über die Arraylist

Iterator new_nameitr2=list.iterator();

oder müssen wir schaffen, um erneut zu initialisieren die vorhandenen Iterator wie unten, dass der Iterator nameitr wird auf das 0. Element der Arraylist hingewiesen werden.

nameitr=list.iterator();

+0

Danke @S McCrohan und Mr. Vijay.gv. ** Reinitialisierung ** ist die beste Möglichkeit, dieselbe Referenz zu verwenden. –

0

Zunächst einmal, Sie werden nicht das letzte Element bekommen. Sie sollten ein Gleichheitszeichen setzen.

Zweitens müssen Sie einen anderen Iterator verwenden, da der erste Iterator das Ende erreicht hat. Sie können dies tun:

Iterator<String> nameitr=list.iterator(); 
while(nameitr.hasNext()) 
    System.out.println(nameitr.next()); 

Iterator<String> nameitr1=list.iterator(); 
while(nameitr1.hasNext()) 
    System.out.println(nameitr1.next()); 
+0

danke. was funktioniert –

0

Wenn die unter Anweisung ausführt, wird ein Iterator nameitr über das Arraylist-Objekt ‚Liste‘ erstellt werden. Iterator nametr = list.iterator(); Wenn wir nameitr.next() aufrufen, zeigt nametitr das erste Element oder die ArrayList an. In ähnlicher Weise wird die Schleife ausgeführt, bis das nametitr.hasNext() false ist. Das heißt, namesti zeigt auf das letzte Element oder die Arraylist und es gibt keine Elemente mehr in der Arraylist, um darauf zu zeigen. Da das Nameitr bereits das letzte Element von Arraylist zeigt, gibt die untere Zeile des Codes false zurück.
while (nameitr.hasNext()) // hier Fehler tritt

Um dies zu vermeiden, müssen wir einen neuen Iterator über die Arraylist Iterator

new_nameitr2=list.iterator(); 

oder müssen wir schaffen das bestehende neu initialisieren Iterator wie unten, so dass der Iterator namenitr auf das 0. Element des Arraylists gezeigt wird. nametitr = list.iterator();

+0

danke vijay.gv –

Verwandte Themen