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.