Michael Brenndoerfer
Michael Brenndoerfer

Reputation: 4066

How to convert Integer[] to int[] array in Java?

Is there a fancy way to cast an Integer array to an int array? (I don't want to iterate over each element; I'm looking for an elegant and quick way to write it)

The other way around I'm using

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

I'm looking for an one-liner but wasn't able to find something.

The goal is to:

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

Upvotes: 48

Views: 47581

Answers (5)

Juned Ahsan
Juned Ahsan

Reputation: 68715

If you can consider using Apache commons ArrayUtils then there is a simple toPrimitive API:

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

Converts an array of object Doubles to primitives handling null.

This method returns null for a null input array.

Upvotes: 5

Shekhar
Shekhar

Reputation: 19

You can download the org.apache.commons.lang3 jar file which provides ArrayUtils class.
Using the below line of code will solve the problem:

ArrayUtils.toPrimitive(Integer[] nonPrimitive)

Where nonPrimitive is the Integer[] to be converted into the int[].

Upvotes: 1

If you have access to the Apache lang library, then you can use the ArrayUtils.toPrimitive(Integer[]) method like this:

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

Upvotes: 1

Janin
Janin

Reputation: 306

Using Guava, you can do the following:

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

If you're using Maven, add this dependency:

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

Upvotes: 2

Vaibhav
Vaibhav

Reputation: 881

You can use Stream APIs of Java 8

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

Upvotes: 81

Related Questions