Convertir la enumeración en un conjunto / lista

172

¿Existe algún método de puente de una línea para volcar una enumeración dada en java.util.List o java.util.Set?

Algo incorporado como Arrays.asList()o Collection.toArray()debería existir en alguna parte, pero no puedo encontrarlo en la ventana del evaluador de mi depurador IntelliJ (y también en los resultados de Google / SO).

Anton K
fuente

Respuestas:

322

Puede usar Collections.list()para convertir una Enumerationa Listen una línea:

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

No hay un método similar para obtener un Set, sin embargo, aún puede hacerlo una línea:

Set<T> set = new HashSet<T>(Collections.list(enumeration));
WhiteFang34
fuente
De alguna manera me perdí este método mientras acechaba en el menú desplegable de autocompletado. ¡Gracias!
Anton K
5

Al usar guayaba (Ver doc ) la hay Iterators.forEnumeration. Dado un Enumeration xpuede hacer lo siguiente:

para obtener un conjunto inmutable:

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

para obtener una lista inmutable:

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

para obtener un hashSet:

Sets.newHashSet(Iterators.forEnumeration(x));
Alex
fuente
5

Hay un ejemplo simple de conversión de enumeración a lista. Para esto utilicé el Collections.list(enum)método.

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);
    }

}

Referencia: cómo convertir la enumeración a la lista

Anuj Dhiman
fuente
3

Si necesita Setmás que List, puede utilizar EnumSet.allOf () .

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

Actualización : JakeRobb tiene razón. Mi respuesta es sobre java.lang.Enum en lugar de java.util.Enumeration. Perdón por la respuesta no relacionada.

Timur Levadny
fuente
2
Estoy bastante seguro de que el autor de la pregunta preguntaba sobre java.util.Enumeration, el primo heredado de Iterator, no java.lang.Enum, lo que obtienes cuando usas la palabra clave 'enum'.
JakeRobb
Hice una búsqueda en Google para "Java Convert Enum en un conjunto" y este hilo regresó como la primera respuesta. @Timur recibe mi voto positivo.
ShellDude
-2

Necesitaba lo mismo y esta solución funciona bien, espero que pueda ayudar a alguien también

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

entonces puede obtener el .name () de su enumeración.

S_intg
fuente
55
Su respuesta muestra cómo convertir una matriz en una lista y solo sucede que tiene una matriz de enumeraciones. La pregunta era sobre Enumeración-> Conversión de lista.
kryger