如何在 Java 中将 Integer[] 转换为 int[] 数组?

Posted

技术标签:

【中文标题】如何在 Java 中将 Integer[] 转换为 int[] 数组?【英文标题】:How to convert Integer[] to int[] array in Java? 【发布时间】:2015-10-02 09:17:34 【问题描述】:

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

我正在使用另一种方式

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

我正在寻找单线但找不到东西。

目标是:

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

【问题讨论】:

实际的问题是:你为什么要这样做?损害已经造成(您已经创建了所有Double 对象并付出了更高的执行时间和更高的内存使用量)。 不,你不能投射它,因为 Double[] 不是 double[]。幕后会有一个迭代。单行可能是:double[] valuesPrimitives = Stream.of(valuesWrapper).mapToDouble(d -&gt; d).toArray(); ***.com/questions/564392/… @JavaHopper 我想你误解了我的意思。我明白为什么人们想要一个简短而优雅的转换解决方案。我不明白为什么要进行实际转换。您可以简单地使用Double[] 而不是double[] @Turing85 适应国外 API 是一个常见的案例。 【参考方案1】:

您可以使用 Java 8 的 Stream API

int[] intArray = Arrays.stream(array).mapToInt(Integer::intValue).toArray();

【讨论】:

有时候我更喜欢看mapToInt(i -&gt; i)【参考方案2】:

如果您可以考虑使用Apache commons ArrayUtils,那么有一个简单的toPrimitive API:

public static double[] toPrimitive(Double[] array, double valueForNull)

将对象 Doubles 数组转换为处理 null 的基元。

此方法为空输入数组返回空值。

【讨论】:

您好,感谢您的回答。不幸的是我忘了提到我不能使用 ArrayUtils。不过还是谢谢【参考方案3】:

使用 Guava,您可以执行以下操作:

int[] intArray = Ints.toArray(intList);

如果您使用的是 Maven,请添加此依赖项:

<dependency>
   <groudId>com.google.guava</groupId>
   <artifactId>guava</artifactId>
   <version>18.0</version>
</dependency>

【讨论】:

【参考方案4】:

如果您可以访问 Apache 语言库,那么您可以像这样使用 ArrayUtils.toPrimitive(Integer[]) 方法:

int[] primitiveArray = ArrayUtils.toPrimitive(objectArray);

【讨论】:

【参考方案5】:

您可以下载提供ArrayUtils 类的org.apache.commons.lang3 jar 文件。 使用以下代码行将解决问题:

ArrayUtils.toPrimitive(Integer[] nonPrimitive)

其中nonPrimitive 是要转换为int[]Integer[]

【讨论】:

以上是关于如何在 Java 中将 Integer[] 转换为 int[] 数组?的主要内容,如果未能解决你的问题,请参考以下文章

在 Java 中将 int 的原始数组转换为 ArrayList:“java.lang.ClassCastException:[我无法转换为 java.lang.Integer”

在java中将整数列表转换为整数数组[重复]

Integer.parseInt 是在 Java 中将 String 转换为 Int 的最佳方法?

如何在 Java 中将 String 转换为 int?

如何在 Java 中将 String 转换为 int?

如何在 Java 中将 String 转换为 int?