Iterator

Status
Nicht offen für weitere Antworten.

karahead

Aktives Mitglied
Hi,

Code:
List<Integer> ints = new Vector<Integer>();
ints.add(1);
ints.add(2);
ints.add(3);

for(Iterator<Integer> i = ints.iterator(); i.hasNext(); ){
  System.out.println(i.next());
}

Ist eigentlich sichergestellt, dass folgende Ausgabe kommt.
1
2
3

???

Oder iteriert der Iterator wahlos durch die Liste???
 

SnooP

Top Contributor
Ein Iterator iteriert anhand der Verkettung in der Datenstruktur durch dieselbe... - Bei verketteten Listen ist dies in der Reihenfolge des Speicherns... bei 1,2,3 liegt ein Sortierungsgedanke dahinter - wenn man allerdings erst 2 dann 3 und dann 1 einfügt, wird wohl auch 2, 3, 1 rauskommen bzw. 1, 3 ,2 (je nachdem ob append oder insert).

Bei den Collections in Java ist das auf jeden Fall so... allerdings können selbstgeschriebene Iterator das durchaus anders regeln - eine "proper" Reihenfolge kann ja auch inhaltlich anders sein, als die Reihenfolge des Einfügens...
 

karahead

Aktives Mitglied
Hab ich mir schon gedacht.
Naja dann ist wohl die sicherste Methode um in der Reihenfolge zu iterieren, immer noch die:

for(int i =0 ; i<vec.size(); i++){
//code
}
 

SnooP

Top Contributor
Wenn du per Index auf die Collectionelemente zugreifen kannst, vielleicht... macht aber zum Iterator auch keinen Unterschied - ich würde beim Durchwandern von Collections immer dem Iterator vertrauen...
Bei foreach-Schleifen mit Java 1.5 ist's zwangsläufig der Iterator, der die Collection durchwandert.
 

byte

Top Contributor
ziehe auch den iterator vor, denn dafür ist er da. es sei denn, man möchte dabei veränderungen an der liste vornehmen, dann gibts natürlich mit dem iterator probleme und man muss auf die ordinäre for-schleife zurückgreifen.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben