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

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

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

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


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.


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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.