Archiv verlassen und diese Seite im Standarddesign anzeigen : Vector: Iterieren über Iterator oder i<v.size()
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
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
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
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.
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
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.