Java-enhanced enhanced for-Schleife
Derzeit (Java 6), die mit Java enhanced for-loop, die ich kennen keinen Weg, um direkt Zugriff auf den iterator index-kurz von der Rückkehr zu den alten indizierten for-Schleife oder die Verwendung einer externen Zähler.
Gibt es Pläne (oder vielleicht eine aktuelle Art und Weise) zur Umsetzung dieser "erweiterten verbesserte" for-Schleife, wo man wäre in der Lage, Zugriff auf den index der Schleife (und möglicherweise sogar manipulieren)?
Als ein Beispiel, wo dies erforderlich sein könnte, berücksichtigt werden(dies ist aus tatsächlichen Produktions-code):
int i = 1;
for (final String action : actions) {
parameters.set(String.valueOf(i++), action);
}
InformationsquelleAutor der Frage oym | 2010-11-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, wie Sie sagte, wenn Sie einen index verwenden Sie einfach ein standard -
for
loop oder update einen counter manuell.Aber überdenken Sie Ihre Frage. Warum sollten Sie einen index in einem
for (Object o : list)
Schleife?Den springende Punkt mit einer erweiterten Schleife zu abstrahieren, die fiesen Teile mit index oder einen iterator.
Meisten Sprachen, die heute nicht diese Art von Funktionen in Schleifen. Nur als Beispiel, die Pythonic Weg, dies zu tun ist:
InformationsquelleAutor der Antwort Yuval Adam
Nicht. Verwenden einer externen Variablen.
InformationsquelleAutor der Antwort Bozho
Warum würden Sie brauchen, um einen weiteren Weg, der den Zugriff auf Elemente per index?
Die erweiterte for-Schleife erstellt wurde, als Abkürzung für, wenn Sie brauchen nicht den index des Elements. Es gestrafft Dinge.
Wenn Sie noch brauchen, der index, fallen zurück in eine reguläre for-Schleife. Das ist einer der Gründe warum Sie dort sind.
InformationsquelleAutor der Antwort Justin Niessner
Ist es besser, halten Sie außerhalb Zähler, um den index,aber Sie könnte so etwas tun ( es ist etwas übertrieben für eine einfache Aufgabe):
Für erste index während während der Iteration:
Hinweis:Der obige code muss in Abhängigkeit von Guave ist AbstractIterator
InformationsquelleAutor der Antwort Emil
Es ist nicht Weg, gerade jetzt, es sei denn, Sie halten einen Zähler! Ich weiß, das ist hässlich, aber java 7 besser sein wird. Ich weiß nicht, warum andere Leute sagen, wir brauchen es nicht. Manchmal müssen wir wissen, was ist Letzte Mitglied, oder ungerade-Mitglied, etc.
InformationsquelleAutor der Antwort fastcodejava