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

Anton K
fonte

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));
WhiteFang34
fonte
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));
Alex
fonte
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

Anuj Dhiman
fonte
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.

Timur Levadny
fonte
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.

S_intg
fonte
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