Convertir une énumération en un ensemble / une liste

172

Existe-t-il une méthode de pont à une seule ligne pour vider une énumération donnée dans java.util.List ou java.util.Set?

Quelque chose de intégré comme Arrays.asList()ou Collection.toArray()devrait exister quelque part, mais je ne parviens pas à le trouver dans la fenêtre d'évaluation de mon débogueur IntelliJ (et dans les résultats Google / SO également).

Anton K
la source

Réponses:

322

Vous pouvez utiliser Collections.list()pour convertir un Enumerationen un Listen une seule ligne:

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

Il n'y a pas de méthode similaire pour obtenir un Set, mais vous pouvez toujours le faire sur une ligne:

Set<T> set = new HashSet<T>(Collections.list(enumeration));
WhiteFang34
la source
D'une manière ou d'une autre, j'ai raté cette méthode en me cachant dans la liste déroulante de saisie semi-automatique. Merci!
Anton K
5

Lors de l'utilisation de goyave (voir doc ), il y en a Iterators.forEnumeration. Étant donné un, Enumeration xvous pouvez faire ce qui suit:

pour obtenir un ensemble immuable:

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

pour obtenir une liste immuable:

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

pour obtenir un hashSet:

Sets.newHashSet(Iterators.forEnumeration(x));
Alex
la source
5

Il existe un exemple simple de conversion d'énumération en liste. pour cela, j'ai utilisé la Collections.list(enum)méthode.

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

}

Référence: Comment convertir une énumération en liste

Anuj Dhiman
la source
3

Si vous en avez besoin Setplutôt que List, vous pouvez utiliser EnumSet.allOf () .

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

Mise à jour : JakeRobb a raison. Ma réponse concerne java.lang.Enum au lieu de java.util.Enumeration. Désolé pour la réponse sans rapport.

Timur Levadny
la source
2
Je suis à peu près sûr que le demandeur posait des questions sur java.util.Enumeration, le cousin hérité d'Iterator, pas java.lang.Enum, ce que vous obtenez lorsque vous utilisez le mot-clé «enum».
JakeRobb
J'ai fait une recherche google pour "java convert enum into a set" et ce fil est revenu comme première réponse. @Timur obtient mon vote favorable.
ShellDude
-2

J'avais besoin de la même chose et cette solution fonctionne bien, j'espère qu'elle pourra également aider quelqu'un

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

alors vous pouvez obtenir le .name () de votre énumération.

S_intg
la source
5
Votre réponse montre comment convertir un tableau en liste et il arrive seulement que vous ayez un tableau d'énumérations. La question portait sur la conversion Enumération-> Liste.
kryger