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).

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

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

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


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.


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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.