Question Une boucle 'for' pour itérer sur une énumération en Java


j'ai un enum en Java pour les directions cardinales et intermédiaires:

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

Comment puis-je écrire un for boucle qui itère à travers chacun de ces enum valeurs?


757
2017-07-09 16:24


origine


Réponses:


.values()

Vous pouvez appeler le values() méthode sur votre énumération.

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

Ce values() la méthode est implicitement déclaré par le compilateur. Donc, il n'est pas répertorié sur 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



Vous pouvez le faire comme suit:

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

56
2017-07-09 16:27



Ruisseaux

Avant Java 8, nous devons imprimer les valeurs en utilisant pour boucle, comme:

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

Mais en Java 8, nous pouvons également utiliser le lambda et les cours d'eau (Didacticiel):

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 vous ne vous souciez pas de la commande, cela devrait fonctionner:

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



Voici comment itérer sur Enum:

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

Pour en savoir plus sur les opérations Enum courantes, vérifiez ceci: Comment utiliser Enums en Java


4
2017-09-30 09:49



Java8

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

à partir de Java5 +

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

3
2018-02-25 06:21



Essayez d'utiliser un pour chaque

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

3
2018-06-23 06:50