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.