web-dev-qa-db-fra.com

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

Existe-t-il une méthode de pont à une couche permettant de vider une énumération donnée vers Java.util.List ou Java.util.Set?

Un élément intégré tel que 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).

150
Anton K

Vous pouvez utiliser Collections.list() pour convertir un Enumeration en un List sur une 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 en une ligne:

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

Que diriez-vous de ceci: Collections.list (Énumération e) renvoie un ArrayList<T>

19
Nate W.

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

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
Anuj Dhiman

Lors de l'utilisation de goyave (voir doc ), il y a Iterators.forEnumeration. Étant 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));
3
Alex

Si vous avez besoin de Set plutôt que de 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
Timur Levadny