是否有一种将Integer数组转换为int数组的奇特方法? (我不想迭代每个元素;我正在寻找一种优雅而快速的方式来编写它)
另一种方式我使用
scaleTests.add(Arrays.stream(data).boxed().toArray(Double[]::new));
我正在寻找单行,但却找不到东西。
目标是:
int[] valuesPrimitives = <somehow cast> Integer[] valuesWrapper
答案 0 :(得分:48)
您可以使用Java 8的Stream API
int[] intArray = Arrays.stream(array).mapToInt(Integer::intValue).toArray();
答案 1 :(得分:6)
如果您可以考虑使用Apache commons ArrayUtils,则会有一个简单的toPrimitive API:
public static double [] toPrimitive(Double [] array, double valueForNull)
将对象双精度数组转换为处理null的基元。 此方法为空输入数组返回null。
答案 2 :(得分:2)
使用Guava,您可以执行以下操作:
int[] intArray = Ints.toArray(intList);
如果您正在使用Maven,请添加此依赖项:
<dependency>
<groudId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
答案 3 :(得分:1)
您可以下载提供org.apache.commons.lang3
类的ArrayUtils
jar文件。
使用下面的代码行可以解决问题:
ArrayUtils.toPrimitive(Integer[] nonPrimitive)
nonPrimitive
是要转换为Integer[]
的{{1}}的地方。
答案 4 :(得分:-1)
如果您有权访问Apache lang库,则可以使用ArrayUtils.toPrimitive(Integer [])方法,如下所示:
int[] primitiveArray = ArrayUtils.toPrimitive(objectArray);