Converti enumerazione in un set / elenco


172

Esiste un metodo bridge one-liner per scaricare una determinata enumerazione su java.util.List o java.util.Set?

Qualcosa di simile Arrays.asList()o Collection.toArray()dovrebbe esistere da qualche parte, ma non riesco a trovarlo nella finestra del valutatore del debugger IntelliJ (e anche nei risultati di Google / SO).

Risposte:


322

È possibile utilizzare Collections.list()per convertire un Enumerationin Listin una riga:

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

Non esiste un metodo simile per ottenere un Set, tuttavia puoi ancora farlo su una riga:

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

In qualche modo ho perso questo metodo mentre mi nascondevo nel menu a discesa del completamento automatico. Grazie!
Anton K,


5

Quando si usa guava (vedi doc ) c'è Iterators.forEnumeration. Dato un Enumeration xè possibile effettuare le seguenti operazioni:

per ottenere un set immutabile:

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

per ottenere un elenco immutabile:

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

per ottenere un hashSet:

Sets.newHashSet(Iterators.forEnumeration(x));

5

C'è un semplice esempio di convertire l'enumerazione in elenco. per questo ho usato il Collections.list(enum)metodo.

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

}

Riferimento: come convertire l'enumerazione in elenco


3

Se hai bisogno Setpiuttosto che List, puoi usare EnumSet.allOf () .

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

Aggiornamento : JakeRobb ha ragione. La mia risposta riguarda java.lang.Enum invece di java.util.Enumeration. Ci scusiamo per la risposta non correlata.


2
Sono abbastanza sicuro che il richiedente chiedesse di java.util.Enumeration, il cugino legacy di Iterator, non java.lang.Enum, la cosa che ottieni quando usi la parola chiave 'enum'.
JakeRobb,

Ho fatto una ricerca su Google per "java convert enum in un set" e questo thread è tornato come prima risposta. @Timur ottiene il mio voto.
ShellDude,

-2

Avevo bisogno della stessa cosa e questa soluzione funziona bene, spero che possa aiutare anche qualcuno

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

allora puoi ottenere il .name () della tua enumerazione.


5
La tua risposta mostra come convertire un array in un elenco e succede solo che hai un array di enumerazioni. La domanda riguardava l'Enumerazione-> Conversione elenco.
Kryger,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.