我有一个Enum课程:
public enum Fruits {
Apple(0),
Banana(1),
// more objects
}
在另一个课程中,我需要创建一个带有键的地图作为除Apple
以外的所有枚举值,将值作为新arrayList
。
我知道如何在Java 7中执行此操作:
Map<Fruits, List<Class<?>>> fruitMap = new HashMap<>();
for (Fruits f : Fruits.values()) {
if (!f.equals(Fruits.APPLE)) {
fruitMap.put(f, new ArrayList<>());
}
我现在正在学习java 8,并且真的想知道如何使用java 8编写它。 我试了一下:
Map<Fruits, List<Class<?>>> fruitMap =
Arrays.stream(Fruits.values()).filter(e -> !e.equals(Fruits.Apple))
.collect(Collectors.toMap(e -> e, new ArrayList<>()));
任何人都可以教我如何在java 8中编写它。
答案 0 :(得分:0)
你离我不远。 Collectors.toMap
需要两个Functions
:
Map<Fruits, List<Class<?>>> fruitMap = Arrays.stream(Fruits.values())
.filter(e -> !e.equals(Fruits.Apple))
.collect(Collectors.toMap(e -> e, e -> new ArrayList<>()));