将 EnumSet 转换为整数数组
Convert an EnumSet to an array of integers
我有一个 EnumSet 并想将它转换成其序数值的数组。
例如:
enum MyEnum { A, B, C; }
EnumSet enumSet = EnumSet.of(MyEnum.A, MyEnum.C);
以及我想要得到的:
[0, 2]
您可以使用流执行此操作:
int[] ordinals = enumSet.stream().mapToInt(Enum::ordinal).toArray();
你不应该使用没有 <MyEnum>
部分的原始类型 EnumSet
EnumSet<MyEnum> enumSet = EnumSet.of(MyEnum.A, MyEnum.C);
一个Java8解:
MyEnum[] values = MyEnum.values();
int[] ordinals = IntStream.range(0, values.length).filter(i -> enumSet.contains(values[i])).toArray();
前Java8解法:
int[] ordinals2 = new int[enumSet.size()];
int index = 0;
for (MyEnum e : enumSet)
ordinals2[index++] = e.ordinal();
检查它是否有效:
System.out.println(Arrays.toString(ordinals));
System.out.println(Arrays.toString(ordinals2));
我有一个 EnumSet 并想将它转换成其序数值的数组。 例如:
enum MyEnum { A, B, C; }
EnumSet enumSet = EnumSet.of(MyEnum.A, MyEnum.C);
以及我想要得到的:
[0, 2]
您可以使用流执行此操作:
int[] ordinals = enumSet.stream().mapToInt(Enum::ordinal).toArray();
你不应该使用没有 <MyEnum>
部分的原始类型 EnumSet
EnumSet<MyEnum> enumSet = EnumSet.of(MyEnum.A, MyEnum.C);
一个Java8解:
MyEnum[] values = MyEnum.values();
int[] ordinals = IntStream.range(0, values.length).filter(i -> enumSet.contains(values[i])).toArray();
前Java8解法:
int[] ordinals2 = new int[enumSet.size()];
int index = 0;
for (MyEnum e : enumSet)
ordinals2[index++] = e.ordinal();
检查它是否有效:
System.out.println(Arrays.toString(ordinals));
System.out.println(Arrays.toString(ordinals2));