2015-10-06 81 views

回答

4

你不應該使用原始類型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)); 
+0

我想我需要使用pre-Java 8解決方案。 –

4

你可以用流做到這一點:

int[] ordinals = enumSet.stream().mapToInt(Enum::ordinal).toArray(); 
+0

感謝。它可以工作,但在Android中沒有stream()方法。對不起,我忘了添加'Android'標籤 –