Dienstag, 17. November 2015

 

Java-for Schleife wie in Python

Python arbeitet mit Sequenzen. Manchmal ist es praktisch, wenn man eine Sequenz direkt bei der for-Schleife hin schreiben kann. Ein Beispiel:
for i in [1, 3, 2, 5, 10, -3]:
    print(i, end=" ")
print()
In Java ist das ganz ähnlich möglich. Hier ein zwei Varianten:
class T {
    // helper method
    public static int[] list(int... values) {
        return values;
    }
    public static void main(String[] args) {
        // use helper to generate array
        for (int i : list(1, 3, 2, 5, 10, -3)) {
            System.out.printf("%d ", i);
        }
        System.out.println();

        // use locally defined array
        for (int i : new int[] { 1, 3, 2, 5, 10, -3 }) {
            System.out.printf("%d ", i);
        }
        System.out.println();
    }
}
Die Ausgabe sind dann die Zahlen in der Liste:
1 3 2 5 10 -3 
1 3 2 5 10 -3 

Die Hilfsmethode helper() nützt das Java-Feature der variablen Parameterliste, die dann in eine Sequenz (Array) umgewandelt wird.

Die zweite Variante verwendet die Initialisierung von Arrays.

Auch mit beliebigen Objekten ist das Prinzip machbar:

for o in [1, "a", 23.3, "hallo", 3]:
    print(o, end=" ")
print()
public class ListsInForLoop {
    // helper
    public static Object[] olist(Object... objects) {
        return objects;
    }

    public static void main(String[] args) {
        // different kinds of Objects
        for (Object o : olist(1, "a", 23.3, "hallo", 3)) {
            System.out.print(o);
            System.out.print(" ");
        }
        System.out.println();

        // use locally defined Object array
        for (Object o : new Object[] { 1, "a", 23.3, "hallo", 3 }) {
            System.out.print(o);
            System.out.print(" ");
        }
        System.out.println();
    }

}
Die Ausgabe ist dann so:
1 a 23.3 hallo 3 
1 a 23.3 hallo 3

Labels:


Kommentare:

Kommentar veröffentlichen

Abonnieren Kommentare zum Post [Atom]





<< Startseite

This page is powered by Blogger. Isn't yours?

Abonnieren Posts [Atom]