it-swarm.com.de

Umwandlung der Aufzählung in eine Menge / Liste

Gibt es eine einzeilige Bridge-Methode, um eine bestimmte Enumeration in Java.util.List oder Java.util.Set abzulegen?

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

150
Anton K

Sie können Collections.list() verwenden, um ein Enumeration in ein List in einer Zeile zu konvertieren:

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

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

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

Wie wäre es damit: Collections.list (Enumeration e) gibt ein ArrayList<T>

19
Nate W.

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: Konvertieren der Aufzählung in eine Liste

5
Anuj Dhiman

Bei der Verwendung von Guave (siehe doc ) gibt es Iterators.forEnumeration. Gegeben ein Enumeration 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));
3
Alex

Wenn Sie Set anstelle von List benötigen, können Sie EnumSet.allOf () verwenden.

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

Update : JakeRobb hat recht. Meine Antwort bezieht sich auf Java.lang.Enum anstelle von Java.util.Enumeration. Entschuldigung für die Antwort, die nichts damit zu tun hat.

2
Timur Levadny