我在Java中有一个用于基数和中间方向的枚举:
public enum Direction {
NORTH,
NORTHEAST,
EAST,
SOUTHEAST,
SOUTH,
SOUTHWEST,
WEST,
NORTHWEST
}
我怎么能写一个循环,遍历每一个这些枚举值?
我在Java中有一个用于基数和中间方向的枚举:
public enum Direction {
NORTH,
NORTHEAST,
EAST,
SOUTHEAST,
SOUTH,
SOUTHWEST,
WEST,
NORTHWEST
}
我怎么能写一个循环,遍历每一个这些枚举值?
当前回答
枚举类型的所有常量都可以通过调用该类型的隐式公共静态T[] values()方法来获得:
for (Direction d : Direction.values()) {
System.out.println(d);
}
其他回答
如果你不关心顺序,这应该工作:
Set<Direction> directions = EnumSet.allOf(Direction.class);
for(Direction direction : directions) {
// do stuff
}
java 8中的更多方法:
使用EnumSet和forEach
EnumSet.allOf(Direction.class).forEach(...);
使用数组。asList with forEach
Arrays.asList(Direction.values()).forEach(...);
Java8
Stream.of(Direction.values()).forEach(System.out::println);
从Java5 +
for ( Direction d: Direction.values()){
System.out.println(d);
}
你可以这样做:
for (Direction direction : EnumSet.allOf(Direction.class)) {
// do stuff
}
我们可以像这样使用一个过滤器(JAVA 8)。
Stream.of(Direction.values()).filter(name -> !name.toString().startsWith("S")).forEach(System.out::println);