Можно ли пройтись по перечислению, чтобы добавить каждый элемент в список в Java? [Дубликат]

1

У меня есть перечисление с 30 значениями, и мне нужно поместить каждый в список. Есть ли способ перебрать каждый из них и добавить их против 30 строк кода, добавляющих каждый из них? Имя перечисления - это школа, и я попытался сделать что-то вроде

 List<School> schools = new ArrayList<School>();
 schools.add(School.values());

а также

List<School> schools = new ArrayList<School>();
 schools.addAll(School.values());
  • 0
    @LuiggiMendoza Извините, я это исправил
  • 0
    нет разницы между двумя кодами
Показать ещё 2 комментария
Теги:
list
enums

2 ответа

1
Лучший ответ

Создайте свой список, как

List<School> schools = new ArrayList<School>(Arrays.asList(School.values()));

Если вы используете Arrays.asList(School.values()), вы не сможете добавить что-нибудь в этот список позже, и в итоге вы получите исключение. Из документов метода asList()

Возвращает список фиксированного размера, поддерживаемый указанным массивом.

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

1

enum#values возвращает массив. Вместо этого используйте Arrays.asList:

schools.add(Arrays.asList(School.values()));

Или однострочный:

List<School> schools = Arrays.asList(School.values());
  • 0
    (В случае второй строки): Таким образом, OP не может ничего добавить после schools .
  • 0
    @ sᴜʀᴇsʜᴀᴛᴛᴀ, поэтому я показываю первый вариант. В любом случае, я не могу думать о явном случае использования, когда вам нужно будет добавить повторяющиеся значения перечисления в List<YourEnum> поэтому однострочного подхода на этот раз будет достаточно.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню