Konvertierung in eine Menge / Liste konvertieren

171

Gibt es eine einzeilige Bridge-Methode, um eine bestimmte Aufzählung in java.util.List oder java.util.Set zu speichern?

Etwas Eingebautes wie Arrays.asList()oder Collection.toArray()sollte irgendwo existieren, aber ich kann es nicht im Evaluator-Fenster meines IntelliJ-Debuggers finden (und auch in den Google / SO-Ergebnissen).

Anton K.
quelle

Antworten:

320

Sie können verwenden Collections.list(), um ein Enumerationin ein Listin eine Zeile umzuwandeln :

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

Es gibt keine ähnliche Methode, um eine zu erhalten Set, aber Sie können es immer noch in einer Zeile tun:

Set<T> set = new HashSet<T>(Collections.list(enumeration));
WhiteFang34
quelle
Irgendwie habe ich diese Methode verpasst, als ich in der Dropdown-Liste für die automatische Vervollständigung lauerte. Vielen Dank!
Anton K
5

Bei Verwendung von Guave (siehe Dokument ) gibt es Iterators.forEnumeration. Gegeben einEnumeration x Sie können Folgendes tun:

um ein unveränderliches Set zu bekommen:

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

um eine unveränderliche Liste zu erhalten:

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

um ein hashSet zu bekommen:

Sets.newHashSet(Iterators.forEnumeration(x));
Alex
quelle
5

Es gibt ein einfaches Beispiel für die Konvertierung der Aufzählung in eine Liste. Dafür habe ich Collections.list(enum)Methode verwendet.

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

}

Referenz: So konvertieren Sie die Aufzählung in eine Liste

Anuj Dhiman
quelle
3

Wenn Sie Setnicht List, können Sie EnumSet.allOf () .

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

Update : JakeRobb ist richtig. Meine Antwort bezieht sich auf java.lang.Enum anstelle von java.util.Enumeration. Entschuldigung für die nicht verwandte Antwort.

Timur Levadny
quelle
2
Ich bin mir ziemlich sicher, dass der Fragesteller nach java.util.Enumeration gefragt hat, dem alten Cousin von Iterator, nicht java.lang.Enum, das, was Sie erhalten, wenn Sie das Schlüsselwort 'enum' verwenden.
JakeRobb
Ich habe eine Google-Suche nach "Java Convert Enum in ein Set" durchgeführt und dieser Thread kam als erste Antwort zurück. @ Timur bekommt meine Gegenstimme.
ShellDude
-2

Ich brauchte das Gleiche und diese Lösung funktioniert gut, hoffe, sie kann auch jemandem helfen

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

dann können Sie den .namen () Ihrer Aufzählung erhalten.

S_intg
quelle
5
Ihre Antwort zeigt, wie ein Array in eine Liste konvertiert wird, und es kommt nur vor, dass Sie über ein Array von Aufzählungen verfügen. Die Frage betraf Enumeration-> List Conversion.
Kryger