वरु*_*रुण 11 java arrays enums arraylist
我有enum这样的:
public enum SomeEnum
{
ENUM_VALUE1("Some value1"),
ENUM_VALUE2("Some value2"),
ENUM_VALUE3("Some value3");
}
Run Code Online (Sandbox Code Playgroud)
我需要存储的值enum 的一些值1,有的值2和一些值3在ArrayList.
我可以使用数组获取数组中的所有值SomeEnum.values()并迭代该数组并将值存储为ArrayList如下所示:
SomeEnum values[] = SomeEnum.values();
ArrayList<SomeEnum> someEnumArrayList = new ArrayList<SomeEnum>();
for(SomeEnum value:values)
{
someEnumArrayList.add(value.getValue());
}
Run Code Online (Sandbox Code Playgroud)
有没有像values()这样的其他方法返回某些value1的数组,有些是value2而有些是value3?
Tun*_*aki 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);
}
}
Run Code Online (Sandbox Code Playgroud)
然后您可以访问此列表:
List<String> values = SomeEnum.getValues();
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Java 8且无法更改枚举:
List<String> list = Stream.of(SomeEnum.values())
.map(SomeEnum::getValue)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)