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

标签 java arrays arraylist enums

我有一个像这样的枚举:

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

我需要将 enum Some value1Some value2Some value3 的值存储在一个 数组列表

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

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

是否有任何其他方法像 values() 返回 Some value1Some value2Some value3?

最佳答案

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

关于java - 如何在数组列表中存储枚举的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32089114/

相关文章:

java - 更新 AppWidget 上的 TextView 文本大小

java - 如何修复outOfMemoryException?

sql - 从 json[] 中删除了最后一个元素?

javascript - 如何通过对象数组中的键值合并或连接数据?

java - ArrayList 中数组的 ArrayAdapter

java - 在java中比较和删除数组列表中的2个连续元素

java - JFrame 中的 JTextFields 循环

java - 我无法删除 geofire 关键导出处 map 上的标记

java - 继承中的静态 block vs 初始​​化 block vs 构造函数

java - (Java8)源码中ArrayList的多个实现有什么区别