【发布时间】:2021-11-12 09:03:18
【问题描述】:
给定以下枚举:
@Getter
@AllArgsConstructor
public enum SampleEnum {
A("aaa", Arrays.asList(1,2,3,4)),
B("bbb", Arrays.asList(5,6,7,8,9)),
C("ccc", Arrays.asList(10,11)),
D("ddd", new ArrayList<>());
private final String code;
private final List<Integer> symbols;
// It does not work on arrays
private static final Map<String, SampleEnum> CODE_TO_ENUM_MAP =
stream(values()).collect(toMap(SampleEnum ::getCode, t -> t));
}
我想在列表中的每个符号与枚举值之间创建映射。
预期地图:Integer -> SampleEnum
1 -> A
2 -> A
3 -> A
4 -> A
5 -> B
6 -> B
7 -> B
8 -> B
9 -> B
10 -> C
11 -> C
如何创建这个Map<Integer, SampleEnum>?
【问题讨论】:
-
您可以先
flatMap将您的列表配对,然后再将这些配对收集到地图中。 -
@4EACH,请提供完整列表。这样我们就可以运行它了。
-
@I.G.就是这个。数组和枚举值之间没有重复
标签: java enums java-stream