PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Vector: Iterieren über Iterator oder i<v.size()



DAB268
01-05-2011, 19:40
Hallo.

Mich würde mal interessieren, was die elegantere Lösung für das iterieren eines Vectors ist:

for (Iterator<Vector> iter = v.iterator(); iter.hasNext();){}

ODER

for (int i = 0; i < v.size(); i++){}

MfG
DAB268

jeebee
01-05-2011, 20:47
Vector<T> v;

Es kommt drauf an was du machen willst:

Wenn du den Inhalt des Vectors während dem Iterieren verändern willst (Elemente löschen/hinzufügen) dann musst du die Variante mit dem Iterator nehmen.

Sonst gibts die Varianten
for (int i = 0; i < v.size(); i++) {
// do stuff using the current index and element
} wenn du den Index des aktuellen Elements brauchst oder
for (T elem : v) {
// do stuff using the current element
} wenn du den Index nicht brauchst.

HTH

--jeebee

DAB268
02-05-2011, 07:38
Wenn du den Inhalt des Vectors während dem Iterieren verändern willst (Elemente löschen/hinzufügen) dann musst du die Variante mit dem Iterator nehmen.

Hi.

Im meinem Fall ändere ich zwar etwas, allerdings direkt im Objekt, welches der Vector enthält.

z.B. v.get(i).set(i);

In diesem Fall müsste eine Lösung ohne Iterator doch auch ausreichend sein, das der Index des Vectors nicht verändert wird oder?

Greetz
DAB268

jeebee
02-05-2011, 13:06
Ja, dazu brauchst du keinen Iterator.

mwanaheri
03-05-2011, 18:24
noch eleganter finde ich es ja, wenn man den Vektor rückwärts durchläuft. Das hat zwei Vorteile:
1) man muss nicht bei jedem Durchlauf die Vektorgröße abfragen, sondern nur bei der Initialisierung der Kontrollvariable (i)
2) man kann auch Elemente löschen, ohne ins Stolpern zu kommen.

BlueJay
24-06-2011, 09:13
Da am Vektor selbst nichts gemacht wird, sondern dort wohl nur Referenzen auf Objekte stehen, ist es Hose wie Jacke.
Die 2.for-Schleife halte ich für schneller, obwohl ich vermute, dass der JIT die beiden Varianten egalisiert.

Gruß,
Ulrike