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).
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));
Que diriez-vous de ceci: Collections.list (Énumération e) renvoie un ArrayList<T>
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
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));
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.