Was passiert, wenn Sie denselben Iterator zweimal für dieselbe Sammlung aufrufen?

8

Wenn ich einen Iterator für myList einstelle:

%Vor%

Und ich nenne es ein zweites Mal: ​​

%Vor%

Wird es beim zweiten Aufruf an den Anfang der Sammlung zurückgehen?

    
Chris 30.09.2010, 14:28
quelle

3 Antworten

8

Die Iterator-Schnittstelle bietet nur drei Methoden:

  • hasNext ()
  • next ()
  • remove ()

Es gibt also keine Möglichkeit, den Iterator zu "reset", zu "von Anfang an neu starten" oder "zurück zu gehen" zu sagen. Sobald es auf dem letzten Element der zugrundeliegenden Sequenz sitzt, hat es seine Aufgabe erfüllt und es ist nicht nötig, die Referenz zu behalten. Flüstere R.I.P und lass es Big GC treffen.

    
Andreas_D 30.09.2010, 14:47
quelle
31

iter.hasNext() in der zweiten Schleife gibt sofort false zurück, so dass der Code innerhalb der Schleife nicht ausgeführt wird.

Wenn Sie den Iterator jedoch neu erstellen (by list.iterator() ), wird die Iteration von Anfang an neu gestartet.

    
Bozho 30.09.2010 14:30
quelle
3

Der zweite Teil wird nicht ausgeführt, weil iter.hasNext () false zurückgibt ...

    
Fortega 30.09.2010 14:31
quelle