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).

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

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

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


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.


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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.