RSS-Feed anzeigen

Landei

Erweiterte For-Schleife mit Index - III

Bewerten
Man könnte angesichts der beiden Vorgänger-Beiträge vielleicht denken, dass das das Beste wäre, was man aktuell mit Java hinbekommt. Aber es heißt ja auch, man soll absteigen, wenn das Pferd tot ist, und in diesem Fall wäre das die erweiterte For-Schleife, die einfach nicht flexibel genug für unsere Ansprüche ist.

Wenn man sich davon löst, ist eine bessere Version wirklich trivial zu schreiben und zu benutzen, und diese ist auch sehr performant:

Java Code:
  1.  
  2. import java.util.function.ObjIntConsumer;
  3.  
  4. public class For {
  5.  
  6.     public static <A> void indexed(Iterable<? extends A> iterable, ObjIntConsumer<? super A> consumer) {
  7.         int index = 0;
  8.         for(A a : iterable) {
  9.             consumer.accept(a, index++);
  10.         }
  11.     }
  12. }

Verwendung:
Java Code:
  1.  
  2. List<String> names = Arrays.asList("Heinz", "Peter", "Marie");
  3. For.indexed(names,  (name, i) -> System.out.println((i+1) + ".\t" + name));

Dass das so geht, war wahrscheinlich den meisten hier bewusst, aber ich wollte es nur noch einmal explizit hinschreiben.

Aktualisiert: 26.05.2016 um 10:09 von Landei

Kategorien
Kategorielos

Kommentare

  1. Avatar von nillehammer
    Anstatt des Biconsumer<A, Integer> nimm besser einen ObjIntConsumer<? super A>. Dann sparst Du Dir das Autoboxing.
  2. Avatar von Landei
    Danke, ich hatte nach IntObjConsumer gesucht und nicht gefunden

    Habe mal die ganzen Anregungen umgesetzt.
  3. Avatar von SlaterB
    hin zu Utterable<? extends A> iterable?
Kommentar schreiben Kommentar schreiben

Trackbacks