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.