使用Java中的所有枚举值填充List

Mon*_*ded 74 java enums list

我想用一个枚举的所有可能值列出一个列表
因为我最近爱上了EnumSet,我利用了allOf()

EnumSet<Something> all = EnumSet.allOf( Something.class);
List<Something> list = new ArrayList<>( all.size());
for (Something s : all) {
    list.add( s);
}
return list;
Run Code Online (Sandbox Code Playgroud)

是否有更好的方法(如在非混淆的一个班轮中)获得相同的结果?

Pet*_*rey 152

我不会在第一个地方使用List,因为EnumSet更适合,但你可以这样做

List<Something> somethingList = Arrays.asList(Something.values());
Run Code Online (Sandbox Code Playgroud)

要么

List<Something> somethingList =
                 new ArrayList<Something>(EnumSet.allOf(Something.class));
Run Code Online (Sandbox Code Playgroud)

  • 有时EnumSet不会削减它.特别是当订单很重要时 (3认同)

Jac*_*ack 10

有一个构造函数ArrayList

ArrayList(Collection<? extends E> c) 
Run Code Online (Sandbox Code Playgroud)

现在,EnumSet扩展AbstractCollection所以你可以做到

ArrayList<Something> all = new ArrayList<Something>(enumSet)
Run Code Online (Sandbox Code Playgroud)


AZ_*_*AZ_ 10

Class.getEnumConstants()

List<SOME_ENUM> enumList = Arrays.asList(SOME_ENUM.class.getEnumConstants());
Run Code Online (Sandbox Code Playgroud)


Evg*_*eev 7

尝试

enum E {
    E1, E2, E3
}

public static void main(String[] args) throws Exception {
    List<E> list = Arrays.asList(E.values());
    System.out.println(list);
}
Run Code Online (Sandbox Code Playgroud)