Reputation: 4066
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
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
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
Reputation: 197
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
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
Reputation: 881
You can use Stream APIs of Java 8
int[] intArray = Arrays.stream(array).mapToInt(Integer::intValue).toArray();
Upvotes: 81