Frage Eine 'for' -Schleife, um über eine Enum in Java zu iterieren


ich habe ein enum in Java für die Haupt- und Zwischenrichtungen:

public enum Direction {
   NORTH,
   NORTHEAST,
   EAST,
   SOUTHEAST,
   SOUTH,
   SOUTHWEST,
   WEST,
   NORTHWEST
}

Wie kann ich ein schreiben? for Schleife, die durch jeden von diesen iteriert enum Werte?


757
2017-07-09 16:24


Ursprung


Antworten:


.values()

Sie können das anrufen values() Methode auf Ihrem Enum.

for (Direction dir : Direction.values()) {
  // do what you want
}

Dies values() Methode ist implizit vom Compiler deklariert. Also ist es nicht auf gelistet Enum Dok.


1252
2017-07-09 16:27



Aufzählungswerte ():

 for (Direction d : Direction.values()) {
     System.out.println(d);
 }

116
2017-07-09 16:26



Sie können dies folgendermaßen tun:

for (Direction direction : EnumSet.allOf(Direction.class)) {
  // do stuff
}

56
2017-07-09 16:27



Streams

Vor Java 8 müssen wir die Werte mit for-Schleife ausgeben, wie:

for (Direction dir : Direction.values()) {
            System.out.println(dir);
}

Aber in Java 8 können wir auch Lambda und Streams verwenden (Tutorial):

Stream.of(Direction.values()).forEach(System.out::println);

31
2018-06-21 07:16



for(Direction dir : Direction.values())
{

}

20
2017-07-09 16:28



Wenn Ihnen die Reihenfolge egal ist, sollte das funktionieren:

Set<Direction> directions = EnumSet.allOf(Direction.class);
for(Direction direction : directions) {
    // do stuff
}

17
2017-07-09 16:27



    for (Direction  d : Direction.values()) {
       //your code here   
    }

17
2017-07-09 16:29



So iterieren Sie über Enum:

private static void iterateEnumValues() {
        System.out.println("Iterating over Direction enum");
        for(Direction direction : Direction.values())
        {
            System.out.println("Enum = " + direction);
        }
}

Um mehr über gängige Enum-Operationen zu erfahren, überprüfen Sie Folgendes: Wie verwende ich Enums in Java?


4
2017-09-30 09:49



Java8

Stream.of(Direction.values()).forEach(System.out::println);

von Java5 +

for ( Direction d: Direction.values()){
 System.out.println(d);
}

3
2018-02-25 06:21