【问题标题】:How to store value of enum in arraylist?如何将枚举的值存储在arraylist中?
【发布时间】:2015-11-12 09:01:29
【问题描述】:

我有一个这样的enum

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

我需要在ArrayList 中存储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 的数组?

【问题讨论】:

  • 只需使用返回列表的Arrays.asList(values)

标签: java arrays arraylist enums


【解决方案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();

【讨论】:

  • 如何检查枚举的Arraylist是否包含值?
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    您可以像这样简单地从数组创建列表:

    List<String> list = Arrays.asList(SomeEnum.values());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-14
      • 1970-01-01
      • 2019-10-02
      • 1970-01-01
      • 2014-09-09
      • 1970-01-01
      • 2015-06-19
      相关资源
      最近更新 更多