Erweiterte For-Schleife mit Index

[INDENT]Wie oft braucht man den Index der Elemente eines Iterables und hat dann nur die Wahl zwischen…

     
    List<String> names = ...
    for(int i = 0; i < names.size(); i++) {
       System.out.println((i+1) + ".	" + names.get(i));
    }

…und…

List<String> names = ...
int i = 0;
for(String name : names) {
   System.out.println((++i) + ".	" + name);
}

Doch das ist eigentlich nur die Wahl zwischen Pest und Cholera…

[…]

Hier einmal ein bescheidener Vorschlag:

[…]

Weiterlesen…

Also was für mich ein Problem ist: die nicht aufgelösten HTML-Entitäten in deinen Code-Fragmenten, die sind echt eine Zumutung!

bye
TT

Ja, das ist im Moment bei allen RSS-Posts so. Ist schon spät, aber wenn es bis morgen sonst niemand gemacht hat ( :smiley: ) kümmer’ ich mich drum und räum’ das auf. (Sind auch ein paar doppelte dabei)

Das „Problem“ ist doch idR, dass man das erste/letzte Element anders behandeln will und dass wiederum liegt idR daran, dass man einen String concatenieren will, wo es dann blöd ist, wenn der gewählte Separator vorn oder hinten zuviel dran steht.
Ich löse das dann so:StringBuilder whereClause = new StringBuilder(); String separator = " WHERE "; Collection<Filter> filter = getFilters(); for(Filter filter : filters){ whereClause.append(separator); whereClause.append(filter.getCompare()); separator = " AND "; } return whereClause.toString();Die ab dem 2. Durchlauf „überflüssige“ Referenzzuweisungen in der Schleife dürfte letztlich immer noch performanter sein, als ein if auf den Index an der selben Stelle.(ACHTUNG!!!, wilde Spekulation!!!)

Wenn man wirklich den Index des aktuellen Elements für etwas benötigt, was mir gerade nicht einfällt, dann würde ich das so machen:List<Filter> filters = new ArrayList<>(getFilters()); for(Filter filter : filters) System.out.println( String.format("index von %s ist %d", filter.getAttrinute(), filters.indexOf(filter)));Das ist aus Performanz-Sicht sicherlich fragwürdig, aber wenn man eine Größenordnung erreicht, bei der das zum Problem wird ist Java wahrscheinlich sowieso die falsche Programmiersprache…

bye
TT

Du hast damit Recht. Allerdings wurden die von einer automatischen Funktion erzeugt. Im Original-Eintrag sollte alles passen.
Ich weiß erst mal nicht, wo ich ansetzen soll, aber vielleicht hat @EagleEye eine Idee.

@Timothy_Truckle : Inhaltliche Diskussionen zum BLOG sollten vermutlich besser dort erfolgen.