9

Цикл for для перебора enum в Java

4

Я работаю с перечислением (enum) в Java, которое содержит кардинальные и промежуточные направления:

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

Мне нужно написать цикл for, который будет перебирает каждое из этих значений перечисления. Как правильно это реализовать?

5 ответ(ов)

1

Все константы перечисления (enum) можно получить, вызвав неявный метод public static T[] values() данного типа. Например, для перечисления Direction это можно сделать следующим образом:

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

Этот код перебирает все значения перечисления Direction и выводит их на экран.

0

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

for (Direction direction : EnumSet.allOf(Direction.class)) {
  // выполняем необходимые действия
}
0

Если порядок не имеет значения, то вы можете использовать следующий код:

Set<Direction> directions = EnumSet.allOf(Direction.class);
for (Direction direction : directions) {
    // выполняем необходимые действия
}

Этот код создаёт множество всех значений перечисления Direction с помощью EnumSet.allOf(), и затем перебирает их в цикле for-each.

0

Вы можете использовать стримы в Java 8 для более лаконичного и функционального подхода к перебору значений перечисления (enum). Вот пример с использованием Stream.of:

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

Это решение эффективно создает поток из значений перечисления Direction и применяет forEach, чтобы вывести каждое значение на консоль.

В Java 5 и выше у вас есть более традиционный for-each цикл, который выглядит так:

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

Оба подхода выполняют одну и ту же задачу, но вариант с использованием стримов в Java 8 более современный и может быть лучше интегрирован с остальными функциональными возможностями Java 8, такими как лямбда-выражения и API Stream.

Если у вас есть необходимость в более сложных операциях над элементами, стримы могут предоставить дополнительные возможности для фильтрации, сортировки и преобразования данных.

0

В Java 8 существует несколько способов работы с перечислениями (enums) с использованием forEach. Вот два из них:

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

Вы можете использовать EnumSet для получения всех значений перечисления и затем применить метод forEach:

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

Этот подход полезен, когда вы хотите работать с имеется всеми значениями перечисления, и он более производителен, чем использование массивов.

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

Также можно использовать метод Arrays.asList в сочетании с forEach, чтобы перебрать все значения перечисления:

Arrays.asList(Direction.values()).forEach(...);

Этот способ удобен для работы с коллекциями и дает возможность использовать любые другие методы List, если это необходимо.

Таким образом, оба подхода имеют свои преимущества, и вы можете выбрать тот, который лучше всего подходит для вашей задачи.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь