Подтвердить что ты не робот

Преобразование перечисления в набор/список

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

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

4b9b3361

Ответ 1

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

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

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

Set<T> set = new HashSet<T>(Collections.list(enumeration));

Ответ 3

Существует простой пример преобразования перечисления в список. для этого я использовал метод 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);
    }

}

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

Ответ 4

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

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

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

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

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

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

Sets.newHashSet(Iterators.forEnumeration(x));

Ответ 5

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

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

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

Ответ 6

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

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

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