Перетворити перерахування в набір / список


172

Чи існує якийсь метод мостів з одним лінієм для скидання заданого Перерахування на java.util.List або java.util.Set?

Щось вбудоване схоже Arrays.asList()або Collection.toArray()має десь існувати, але я не можу знайти це у вікні оцінювача налагодження IntelliJ (і в результатах Google / SO також).

Відповіді:


321

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

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

Немає подібного методу отримання Set, проте ви все одно можете зробити це одним рядком:

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

Я якось пропустив цей метод, ховаючись у спадному меню автозавершення. Дякую!
Антон К


5

При використанні гуави (див документа ) є Iterators.forEnumeration. Враховуючи, Enumeration xви можете зробити наступне:

щоб отримати незмінний набір:

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

щоб отримати незмінний список:

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

щоб отримати хеш-комплект:

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

5

Існує простий приклад перетворення перерахування в список. для цього я використав 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

Якщо вам потрібно , Setа не List, ви можете використовувати EnumSet.allOf () .

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

Оновлення : JakeRobb має рацію. Моя відповідь - про java.lang.Enum замість java.util.Enumeration. Вибачте за незв'язану відповідь.


2
Я впевнений, що запитуючий запитував про java.util.Enumeration, спадковий родич Iterator, а не java.lang.Enum, що ви отримуєте, коли використовуєте ключове слово "enum".
JakeRobb

Я здійснив пошук в Google для "java convert enum в набір", і ця тема повернулася як перша відповідь. @Timur отримує мою нагороду.
ShellDude

-2

Мені потрібно було те саме, і це рішення спрацювало чудово, сподіваюся, воно також може допомогти комусь

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

тоді ви можете отримати .name () вашого перерахунку.


5
Ваша відповідь показує, як перетворити масив у список, і трапляється лише те, що у вас є масив Перерахування. Питання стосувалося перерахування-> Перетворення списку.
kryger
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.