Преобразование перечисления в набор/список
Есть ли какой-нибудь однострочный метод моста для выгрузки данного перечисления в java.util.List или java.util.Set?
Что-то встроенное, например Arrays.asList()
или Collection.toArray()
должно где-то существовать, но я не могу найти это в моем окне оценщика отладчика IntelliJ (и в результатах Google/SO тоже).
Ответы
Ответ 1
Вы можете использовать Collections.list()
для преобразования Enumeration
в List
в одну строку:
List<T> list = Collections.list(enumeration);
Нет подобного метода для получения Set
, однако вы все равно можете сделать это в одной строке:
Set<T> set = new HashSet<T>(Collections.list(enumeration));
Ответ 2
Как насчет этого: Collections.list (перечисление e) возвращает ArrayList<T>
Ответ 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() вашего перечисления.