열거를 세트 / 목록으로 변환


172

주어진 Enumeration을 java.util.List 또는 java.util.Set에 덤프하는 단일 라이너 브릿지 방법이 있습니까?

내장 Arrays.asList()또는 Collection.toArray()어딘가에 존재하는 것이 있지만 IntelliJ 디버거의 평가 기 창 (및 Google / SO 결과)에서도 찾을 수 없습니다.

답변:


321

를 한 줄로 Collections.list()변환하는 Enumeration데 사용할 수 있습니다 List.

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

를 얻는 비슷한 방법 Set은 없지만 여전히 한 줄로 할 수 있습니다.

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

어떻게 든 자동 완성 드롭 다운에 숨어있는 동안이 방법을 놓쳤습니다. 감사!
Anton K


5

구아바를 사용하는 경우 ( doc 참조 ) 있습니다 Iterators.forEnumeration. 주어진 경우 Enumeration x다음을 수행 할 수 있습니다.

불변 세트를 얻는 방법 :

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

불변 목록을 얻으려면 :

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

hashSet을 얻으려면 :

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

5

열거를 목록으로 변환하는 간단한 예가 있습니다. 이를 위해 나는 Collections.list(enum)방법을 사용했다 .

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

}

참조 : 열거를 목록으로 변환하는 방법


3

Set대신에 필요한 경우 EnumSet.allOf ()를List 사용할 수 있습니다 .

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

업데이트 : JakeRobb이 맞습니다. 내 대답은 java.util.Enumeration 대신 java.lang.Enum에 관한 것입니다. 관련없는 답변에 대해 죄송합니다.


2
asker가 java.lang.Enum이 아닌 Iterator의 레거시 사촌 인 java.util.Enumeration에 대해 묻는 것이 확실합니다 .'enum '키워드를 사용할 때 얻는 것입니다.
JakeRobb

"java convert enum to a set"에 대한 Google 검색을 수행 했으며이 스레드가 첫 번째 응답으로 돌아 왔습니다. @Timur가 공감을 얻습니다.
ShellDude

-2

나는 똑같은 것이 필요 했고이 솔루션은 잘 작동합니다. 누군가도 도울 수 있기를 바랍니다.

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

그런 다음 열거의 .name ()을 얻을 수 있습니다.


5
귀하의 답변은 배열을 목록으로 변환하는 방법을 보여 주며 열거 배열이있는 경우에만 발생합니다. 문제는 열거-> 목록 변환에 관한 것입니다.
kryger
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.