1

EnumSet があり、それを序数値の配列に変換したいと考えています。例えば:

enum MyEnum { A, B, C; }
EnumSet enumSet = EnumSet.of(MyEnum.A, MyEnum.C);

そして私が取得したいもの:

[0, 2]
4

2 に答える 2

5

ストリームでこれを行うことができます:

 int[] ordinals = enumSet.stream().mapToInt(Enum::ordinal).toArray();
于 2015-10-06T18:25:44.457 に答える
4

<MyEnum>部分なしで生の型 EnumSet を使用しないでください

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));
于 2015-10-06T18:36:42.123 に答える