将Integer []转换为int []数组

时间:2015-07-13 22:41:27

标签: java arrays java-8 wrapper

是否有一种将Integer数组转换为int数组的奇特方法? (我不想迭代每个元素;我正在寻找一种优雅而快速的方式来编写它)

另一种方式我使用

scaleTests.add(Arrays.stream(data).boxed().toArray(Double[]::new));

我正在寻找单行,但却找不到东西。

目标是:

int[] valuesPrimitives = <somehow cast> Integer[] valuesWrapper

5 个答案:

答案 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);