Die "Lösung" hängt gerade in der Programmierung auch immer mit den persönlichen Präferenzen des Entwicklers zusammen.
Du hattest irgendwo eine for-Schleife in Java angeführt. Da gibt's u.a. ...
Code:
// Arrays:
for(int i=0; i<foos.length; i++) {
Foo foo = foos[i];
}
// Iterables:
for(Foo foo : foos) {
// ...
}
for(Iterator<Foo> it = foos.iterator(); it.hasNext(); ) {
Foo foo = it.next();
}
foos.forEach(foo -> {
// ...
});
// Collections:
foos.stream()
// .map(foo -> foo)
.forEach(foo -> {
// ...
});
// Lists:
for(int i=0; i<foos.size(); i++) {
Foo foo = foos.get(i);
}
for(ListIterator<Foo> it = foos.listIterator(); it.hasNext(); ) {
Foo foo = it.next();
}
// Maps:
for(String key : foos.keySet()) {
Foo foo = map.get(key);
}
foos.forEach((key, value) -> {
// ...
});
Und das waren jetzt nur die einfachen Fälle. Wenn man mehr will / braucht, gibt's auch noch deutlich mehr Möglichkeiten: parallelStream, Spliterator, TreeSet, TreeMap, 1000 andere Varianten mit Streams, rekursive Verfahren, while-Schleife, do-while-Schleife, etc. pp.
Vor Java8 kann man die forEach Methoden nicht nutzen, keine Streams, keine Lambdas.
Seit Java10 kann man diverse Variablen als "var" bezeichnen.
Das hängt echt stark davon ab, was ich mit dem Code erreichen will und/oder war der Code Style Guide des Projekts verlangt. Und natürlich auch von den persönlichen Präferenzen - wenn man die Freiheit hat.
Also entsteht entweder eine ziemlich unübersichtliche Sammlung an Möglichkeiten, weil es tausende Möglichkeiten gibt und jeder eine andere Form bevorzugt und/oder durch seine Sprachversion limitiert ist. Oder man baut sich sein eigenes kleines Wiki.
Meine persönliche Wahl lautet: Google. Die ersten paar Links führen zu StackOverflow und dort stehen viele Ideen und Vorschläge. Speziell bei solchen 0815 Sachen findet man dort innerhalb einer Minute die passende Lösung.
Das eigentliche Problem ist (und bleibt) aber: Man muss wissen, was man braucht. Wenn es eine one-size-fits-all Solution geben würde, dann würde es sicherlich auch nur 1 Variante geben, um über Daten zu iterieren. Gibt's aber nicht! Es hängt halt vom Anwendungsfall ab, welche Variante am Besten passt.