循环遍历Java中的枚举

我有一个enum Java的主要和中间的方向:

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

我怎么能写一个循环遍历每个enum值?

.values()

你可以在你的枚举上调用values()方法。

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

这个values()方法是由编译器隐式声明的 。 所以它没有在Enum文档中列出。

枚举值#():

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

你可以这样做,如下所示:

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

stream

在Java 8之前,我们需要使用for循环打印这些值,例如:

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

但在Java 8中,我们也可以使用lambda和stream( Tutorial ):

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

如果你不关心这个命令,这应该工作:

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

Java8

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

来自Java5 +

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

尝试使用每个

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

这是如何遍历枚举:

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

要了解更多关于通用枚举操作,请检查: 如何在java中使用枚举