Pregunta Un bucle 'for' para iterar sobre una enumeración en Java


Yo tengo un enum en Java para las direcciones cardinales e intermedias:

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

¿Cómo puedo escribir un for ciclo que itera a través de cada uno de estos enum ¿valores?


757
2017-07-09 16:24


origen


Respuestas:


.values()

Puedes llamar al values() método en tu enumeración.

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

Esta values() método es implícitamente declarado por el compilador. Por lo tanto, no aparece en la lista Enum doc.


1252
2017-07-09 16:27



Enum # values ​​():

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

116
2017-07-09 16:26



Puedes hacer esto de la siguiente manera:

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

56
2017-07-09 16:27



Corrientes

Antes de Java 8 necesitamos imprimir los valores usando for loop, como:

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

Pero en Java 8 también podemos hacer uso de lambda y streams (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



Si no le importa el orden, esto debería funcionar:

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