如何在数组列表中存储枚举的值?

2022-09-03 13:18:17

我有一个这样的:enum

public enum SomeEnum 
{
    ENUM_VALUE1("Some value1"),
    ENUM_VALUE2("Some value2"),
    ENUM_VALUE3("Some value3");
}

我需要将某些值1某些值2和某些值3的值存储在.enumArrayList

我可以使用并循环访问该数组中获取数组中的所有值,并将值存储在如下所示的位置:SomeEnum.values()ArrayList

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

是否有任何其他方法可以返回某个值1,某个值2和某些值3的数组?values()


答案 1

你可以在内部构建该列表,如下所示: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);
    }

}

然后,您可以使用以下命令访问此列表:

List<String> values = SomeEnum.getValues();

答案 2

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

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