如何在arraylist中存储枚举值?

वरु*_*रुण 11 java arrays enums arraylist

我有enum这样的:

public enum SomeEnum 
{
    ENUM_VALUE1("Some value1"),
    ENUM_VALUE2("Some value2"),
    ENUM_VALUE3("Some value3");
}
Run Code Online (Sandbox Code Playgroud)

我需要存储的值enum 的一些值1,有的值2一些值3ArrayList.

我可以使用数组获取数组中的所有值SomeEnum.values()并迭代该数组并将值存储为ArrayList如下所示:

SomeEnum values[] = SomeEnum.values();
ArrayList<SomeEnum> someEnumArrayList = new ArrayList<SomeEnum>();
for(SomeEnum value:values) 
{
    someEnumArrayList.add(value.getValue());
}
Run Code Online (Sandbox Code Playgroud)

有没有像values()这样的其他方法返回某些value1的数组,有些是value2有些是value3

Tun*_*aki 10

您可以enum像这样在自己内部构建该列表:

public enum SomeEnum {

    ENUM_VALUE1("Some value1"),
    ENUM_VALUE2("Some value2"),
    ENUM_VALUE3("Some value3");

    private static final List<String> VALUES;

    private final String value;

    static {
        VALUES = new ArrayList<>();
        for (SomeEnum someEnum : SomeEnum.values()) {
            VALUES.add(someEnum.value);
        }
    }

    private SomeEnum(String value) {
        this.value = value;
    }

    public static List<String> getValues() {
        return Collections.unmodifiableList(VALUES);
    }

}
Run Code Online (Sandbox Code Playgroud)

然后您可以访问此列表:

List<String> values = SomeEnum.getValues();
Run Code Online (Sandbox Code Playgroud)


Flo*_*own 5

如果您使用的是Java 8且无法更改枚举:

List<String> list = Stream.of(SomeEnum.values())
                          .map(SomeEnum::getValue)
                          .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)