Цикл ‘for’ для итерации по перечислению в Java

У меня есть enum в Java для кардинальных и промежуточных направлений:

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

Как я могу написать цикл for который выполняет итерацию через каждое из этих значений enum ?

.values()

Вы можете вызвать метод values() для вашего enums.

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

Этот метод values() неявно объявляется компилятором . Поэтому он не указан в Enum doc.

Enum # значения ():

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

Вы можете сделать это следующим образом:

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

Streams

До Java 8 нам нужно напечатать значения, используя для цикла, например:

 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 directions = EnumSet.allOf(Direction.class); for(Direction direction : directions) { // do stuff } 
  for (Direction d : Direction.values()) { //your code here } 

Вот как перебирать Enum:

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

Чтобы узнать больше об общих операциях Enum, проверьте следующее: Как использовать Enums в java

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()); } 

Дополнительные методы в java 8:

Использование EnumSet с forEach

 EnumSet.allOf(Direction.class).forEach(...); 

Использование Arrays.asList с forEach

 Arrays.asList(Direction.values()).forEach(...); 
  • Как правильно декодировать параметры юникода, переданные в сервлет
  • Преобразование между java.time.LocalDateTime и java.util.Date
  • Spring 4.x / 3.x (веб-MVC) REST API и JSON2 Почтовые запросы, как правильно это сделать один раз для всех?
  • Как рассчитать возраст человека на Java?
  • Обновление Java PriorityQueue, когда его элементы меняют приоритет
  • Поиск URL вашего приложения только с помощью ServletContext
  • JavaFx tableview sort действительно медленный, как улучшить скорость сортировки, как в java swing
  • Порядок загрузки файлов jar из каталога lib
  • Использовать имя classа в качестве корневого ключа для сериализации JSON Jackson
  • Неверная передача java-сообщений
  • Следует ли избегать использования выражений Java Label?
  • Interesting Posts

    Как конвертировать или записывать файл изображения .DMG в Windows?

    Преобразование существующего проекта в проект библиотеки в Android Studio

    Как найти Waldo с Mathematica?

    Почему hasNextLine () никогда не заканчивается?

    почему Enforce HTTPS принудительно установлен как ДА?

    Одновременно использовать два разных интернет-соединения через Mobile USB Connections?

    Как очистить / что делать с получением жидкой формы очистителя сжатого воздуха на компьютерном оборудовании?

    laravel 4 все маршруты за исключением домашнего результата в ошибке 404

    Использование нескольких веб-камер USB в Linux

    Почему PostgreSQL выполняет последовательное сканирование индексированного столбца?

    Заказать бары в гистограмме ggplot2

    Что делает знак вопроса и точечный оператор?. означает в C # 6.0?

    Не удалось создать путь PKIX: не удалось найти допустимый путь сертификации для запрошенной цели

    Сохранение входа пользователя / пароля пользователя в сценарии Greasemonkey при установке

    Могу ли я настроить Thunderbird 3 для обновления списка папок для учетной записи Exchange IMAP?

    Давайте будем гением компьютера.