Converter enumeração em um conjunto / lista


171

Existe algum método de ponte de uma linha para despejar uma determinada enumeração em java.util.List ou java.util.Set?

Algo interno parece Arrays.asList()ou Collection.toArray()deveria existir em algum lugar, mas não consigo encontrá-lo na janela do avaliador do meu depurador IntelliJ (e nos resultados do Google / SO também).

Respostas:


320

Você pode usar Collections.list()para converter um Enumerationpara um Listem uma linha:

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

Não existe um método semelhante para obter um Set, no entanto, você ainda pode fazer uma linha:

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

De alguma forma, eu perdi esse método enquanto espreitava no menu suspenso de preenchimento automático. Obrigado!
Anton K


5

Ao usar a goiaba (consulte o documento ), existe Iterators.forEnumeration. Dado um, Enumeration xvocê pode fazer o seguinte:

para obter um conjunto imutável:

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

para obter uma lista imutável:

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

para obter um hashSet:

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

5

Há um exemplo simples de converter enumeração em lista. para isso eu usei o Collections.list(enum)método.

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

}

Referência: Como converter enumeração em lista


3

Se você precisar, Setem vez disso List, você pode usar EnumSet.allOf () .

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

Atualização : JakeRobb está certo. Minha resposta é sobre java.lang.Enum em vez de java.util.Enumeration. Desculpe pela resposta não relacionada.


2
Tenho certeza de que o solicitante estava perguntando sobre java.util.Enumeration, o primo herdado do Iterator, não java.lang.Enum, o que você obtém ao usar a palavra-chave 'enum'.
JakeRobb

Eu fiz uma pesquisa no google por "java convert enum em um conjunto" e esse tópico voltou como a primeira resposta. @Timur recebe meu voto positivo.
ShellDude

-2

Eu precisava da mesma coisa e esta solução funciona bem, espero que possa ajudar alguém também

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

então você pode obter o .name () da sua enumeração.


5
Sua resposta mostra como converter uma matriz em uma lista e só acontece que você tenha uma matriz de enumerações. A pergunta era sobre conversão de enumeração-> lista.
Kryger
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.