Question Convertir l'énumération en un ensemble / liste


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

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


125
2018-04-10 09:17


origine


Réponses:


Vous pouvez utiliser Collections.list() convertir un Enumeration à un List en une seule ligne:

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

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

Set<T> set = new HashSet<T>(Collections.list(enumeration));

244
2018-04-10 09:20



Que dis-tu de ça: ArrayList Collections.list (Enumeration e)


15
2018-04-10 09:20



Il y a un exemple simple d'énumération de conversion à la liste. pour cela j'ai utilisé 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 l'énumération en liste 


5
2018-01-16 18:22



Si tu as besoin Set plutôt que List, vous pouvez utiliser EnumSet.allOf ().

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

Mettre à 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.


3
2018-01-04 20:46



Lors de l'utilisation de goyave (Voir doc) il y a Iterators.forEnumeration. Donné un Enumeration x vous 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));

2
2018-04-18 12:39



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

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

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


-1
2018-06-04 09:27