s.m*_*ner 13 java lambda enums java-8
我有一个像这样的静态枚举:
private static enum standardAttributes {
id, gender, firstname, lastname, mail, mobile
}
Run Code Online (Sandbox Code Playgroud)
我需要所有值为String.因此我有一个像这样的方法:
public static List<String> getStandardRecipientsAttributes() {
List<String> standardAttributesList = new ArrayList<String>();
for (standardAttributes s : standardAttributes.values())
standardAttributesList.add(s.toString());
return standardAttributesList;
}
Run Code Online (Sandbox Code Playgroud)
每次调用此方法时都无需创建相同的List.所以我创建了一个静态成员:
static final List<String> standardAttributesList;
static {
standardAttributesList = getStandardRecipientsAttributes();
}
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但我想知道是否有一个奇特的Lambda表达式来替换该方法.像这样的东西:
Arrays.asList(standardAttributes.values()).forEach((attribute) -> standardAttributesList.add(attribute.toString()));
Run Code Online (Sandbox Code Playgroud)
两个问题:
Pet*_*rey 24
你可以做
static final List<String> standardAttributesList =
Stream.of(values())
.map(Enum::name)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
这将从值数组创建一个Stream,将.name()方法应用于每个值,最后将所有结果收集到List中.