Konwertuj wyliczenie na zestaw / listę


172

Czy istnieje metoda mostu jednowierszowego do zrzucenia danego wyliczenia do java.util.List lub java.util.Set?

Coś wbudowanego, takiego jak Arrays.asList()lub Collection.toArray()powinno gdzieś istnieć, ale nie mogę tego znaleźć w oknie ewaluatora mojego debugera IntelliJ (i również w wynikach Google / SO).

Odpowiedzi:


321

Możesz użyć Collections.list()do konwersji a Enumerationna a Listw jednej linii:

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

Nie ma podobnej metody uzyskania a Set, ale nadal możesz to zrobić w jednej linii:

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

Jakoś przegapiłem tę metodę, czując się w menu autouzupełniania. Dzięki!
Anton K


5

Podczas używania guawy (patrz dokument ) jest Iterators.forEnumeration. Biorąc pod uwagę Enumeration x, możesz wykonać następujące czynności:

aby otrzymać niezmienny zestaw:

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

aby uzyskać niezmienną listę:

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

aby uzyskać hashSet:

Sets.newHashSet(Iterators.forEnumeration(x));

5

Istnieje prosty przykład konwersji wyliczenia na listę. do tego użyłem Collections.list(enum)metody.

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

}

Odniesienie: Jak przekonwertować wyliczenie na listę


3

Jeśli potrzebujesz Setzamiast List, możesz użyć EnumSet.allOf () .

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

Aktualizacja : JakeRobb ma rację. Moja odpowiedź dotyczy java.lang.Enum zamiast java.util.Enumeration. Przepraszam za niepowiązaną odpowiedź.


2
Jestem prawie pewien, że pytający pytał o java.util.Enumeration, starszego kuzyna Iteratora, a nie java.lang.Enum, rzecz, którą otrzymujesz, używając słowa kluczowego „enum”.
JakeRobb

Wyszukałem w Google hasło „java convert enum into a set” i ten wątek wrócił jako pierwsza odpowiedź. @Timur dostaje moje upvote.
ShellDude

-2

Potrzebowałem tego samego i to rozwiązanie działa dobrze, mam nadzieję, że może komuś pomóc

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

wtedy możesz pobrać .name () swojego wyliczenia.


5
Twoja odpowiedź pokazuje, jak przekonwertować tablicę na listę i zdarza się, że masz tablicę wyliczeń. Pytanie dotyczyło konwersji Enumeration-> List.
kryger
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.