Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将枚举集转换为整数数组_Java_Android_Arrays_Enums_Enumset - Fatal编程技术网

Java 将枚举集转换为整数数组

Java 将枚举集转换为整数数组,java,android,arrays,enums,enumset,Java,Android,Arrays,Enums,Enumset,我有一个枚举集,希望将其转换为有序值数组。 例如: enum MyEnum { A, B, C; } EnumSet enumSet = EnumSet.of(MyEnum.A, MyEnum.C); 我想得到的是: [0, 2] 您可以使用流执行此操作: int[] ordinals = enumSet.stream().mapToInt(Enum::ordinal).toArray(); 您可以使用流执行此操作: int[] ordinals = enumSet.stream().

我有一个枚举集,希望将其转换为有序值数组。 例如:

enum MyEnum { A, B, C; }
EnumSet enumSet = EnumSet.of(MyEnum.A, MyEnum.C);
我想得到的是:

[0, 2]

您可以使用流执行此操作:

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

您可以使用流执行此操作:

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

如果没有
部分,则不应使用原始类型枚举集

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();
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<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();
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));

谢谢。它可以工作,但在Android中没有stream()方法。对不起,我忘了添加
Android
tag谢谢。它可以工作,但在Android中没有stream()方法。对不起,我忘了添加
Android
tag我想我需要使用pre-java8解决方案。我想我需要使用pre-java8解决方案。