我有enum
这样:
public enum SomeEnum
{
ENUM_VALUE1("Some value1"),
ENUM_VALUE2("Some value2"),
ENUM_VALUE3("Some value3");
}
我需要在enum
中存储ArrayList
某些值1 ,某些值2 和某些值3 的值
我可以使用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 ?
答案 0 :(得分: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);
}
}
然后您可以使用以下方式访问此列表:
List<String> values = SomeEnum.getValues();
答案 1 :(得分:5)
如果您正在使用Java 8且无法更改枚举:
List<String> list = Stream.of(SomeEnum.values())
.map(SomeEnum::getValue)
.collect(Collectors.toList());
答案 2 :(得分:3)
你可以简单地从数组创建列表:
List<String> list = Arrays.asList(SomeEnum.values());