Преобразовать перечисление в набор / список - PullRequest
148 голосов
/ 10 апреля 2011

Существует ли какой-нибудь однострочный метод моста для выгрузки данного перечисления в java.util.List или java.util.Set?

Что-то встроенное, например Arrays.asList() или Collection.toArray(), должно где-то существовать, но я не могу найти это в окне оценки моего отладчика IntelliJ (и результатов Google / SO тоже).

Ответы [ 6 ]

287 голосов
/ 10 апреля 2011

Вы можете использовать Collections.list() для преобразования Enumeration в List в одной строке:

List<T> list = Collections.list(enumeration);

Нет аналогичного способа получить Set,однако вы все равно можете сделать это одной строкой:

Set<T> set = new HashSet<T>(Collections.list(enumeration));
19 голосов
/ 10 апреля 2011

Как насчет этого: Collections.list (перечисление e) возвращает ArrayList<T>

5 голосов
/ 16 января 2016

Существует простой пример преобразования перечисления в список.для этого я использовал Collections.list(enum) метод.

public class EnumerationToList {

    public static void main(String[] args) {
        Vector<String> vt = new Vector<String>();
        vt.add("java");
        vt.add("php");
        vt.add("array");
        vt.add("string");
        vt.add("c");

        Enumeration<String> enm = vt.elements();
        List<String> ll = Collections.list(enm);
        System.out.println("List elements: " + ll);
    }

}

Ссылка: Как преобразовать перечисление в список

3 голосов
/ 18 апреля 2017

При использовании гуавы (см. doc ) есть Iterators.forEnumeration.Получив Enumeration x, вы можете сделать следующее:

, чтобы получить неизменный Набор:

ImmutableSet.copyOf(Iterators.forEnumeration(x));

, чтобы получить неизменный Список:

ImmutableList.copyOf(Iterators.forEnumeration(x));

, чтобы получитьhashSet:

Sets.newHashSet(Iterators.forEnumeration(x));
2 голосов
/ 04 января 2017

Если вам нужно Set вместо List, вы можете использовать EnumSet.allOf () .

Set<EnumerationClass> set = EnumSet.allOf(EnumerationClass.class);

Обновление : JakeRobb прав,Мой ответ о java.lang.Enum вместо java.util.Enumeration.Извините за несвязанный ответ.

0 голосов
/ 04 июня 2015

Мне нужно то же самое, и это решение отлично работает, надеюсь, оно может помочь кому-то также

Enumeration[] array = Enumeration.values();
List<Enumeration> list = Arrays.asList(array);

, тогда вы можете получить .name () вашего перечисления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...