如何将枚举值存储在ArrayList中?

15

我有一个像这样的enum:

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

我需要将enum的值Some value1Some value2Some value3存储在一个ArrayList中。

我可以使用SomeEnum.values()获取所有值并迭代该数组,然后像这样将值存储在ArrayList中:

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

是否有类似于values()的其他方法,可以返回某个值1某个值2某个值3的数组?


只需使用 Arrays.asList(values),它会返回一个列表。 - Dakshinamurthy Karra
3个回答

13

你可以像这样在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();

如何检查枚举的ArrayList是否包含某个值? - Naveen

6

如果你正在使用Java 8且不能更改枚举:

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

3
您可以像这样从数组创建列表:
List<String> list = Arrays.asList(SomeEnum.values());

这将返回一个List,而不是一个ArrayListList没有实现所有方法,例如remove不起作用。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接