我正在尝试但失败了,使用Java 8和流检索所有Enum值并将它们放在列表中。到目前为止,我已经尝试了以下两种方法,但是没有一种返回值。
我究竟做错了什么?
码:
public class Main {
public static void main(String[] args) {
List<String> fruits1 = Stream.of(FruitsEnum.values())
.map(FruitsEnum::name)
.collect(Collectors.toList());
List<String> fruits2 = Stream.of(FruitsEnum.values().toString())
.collect(Collectors.toList());
// attempt 1
System.out.println(fruits1);
// attempt 2
System.out.println(fruits2);
}
enum FruitsEnum {
APPLE("APPL"),
BANANA("BNN");
private String fruit;
FruitsEnum(String fruit) {this.fruit = fruit;}
String getValue() { return fruit; }
}
}
输出:
[APPLE, BANANA]
[[LMain$FruitsEnum;@41629346]
期望的:
["AAPL", "BNN"]
最佳答案
您需要使用map
来getValue
List<String> fruits = Stream.of(FruitsEnum.values())
.map(FruitsEnum::getValue) // map using 'getValue'
.collect(Collectors.toList());
System.out.println(fruits);
这会给你输出
[APPL, BNN]