我有一個EnumSet並想將其轉換爲其序數值的數組。 例如:將EnumSet轉換爲整數數組
enum MyEnum { A, B, C; }
EnumSet enumSet = EnumSet.of(MyEnum.A, MyEnum.C);
,我要得到什麼:
[0, 2]
我有一個EnumSet並想將其轉換爲其序數值的數組。 例如:將EnumSet轉換爲整數數組
enum MyEnum { A, B, C; }
EnumSet enumSet = EnumSet.of(MyEnum.A, MyEnum.C);
,我要得到什麼:
[0, 2]
你不應該使用原始類型EnumSet沒有<MyEnum>
部分
EnumSet<MyEnum> enumSet = EnumSet.of(MyEnum.A, MyEnum.C);
一個Java 8的解決方案:
MyEnum[] values = MyEnum.values();
int[] ordinals = IntStream.range(0, values.length).filter(i -> enumSet.contains(values[i])).toArray();
一個Java前8的解決方案:
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));
你可以用流做到這一點:
int[] ordinals = enumSet.stream().mapToInt(Enum::ordinal).toArray();
感謝。它可以工作,但在Android中沒有stream()方法。對不起,我忘了添加'Android'標籤 –
我想我需要使用pre-Java 8解決方案。 –