How do I convert Double[] to double[]?

arrays, autoboxing, java

Solution

Unfortunately you will need to loop through the entire list and unbox the `Double` if you want to convert it to a `double[]`.

As far as performance goes, there is some time associated with boxing and unboxing primitives in Java. If the set is small enough, you won't see any performance issues.

Problem

I'm implementing an interface that has functionality similar to a table that can contain an types of objects. The interface specifies the following function: ``` double[] getDoubles(int columnIndex); ``` Where I'm stumped is that in my implementation, I'm storing the table data in a 2D `Object` array (`Object[][] data`). When I need to return the values, I want to do the following (it is assumed that `getDoubles()` will only be called on a column that contains doubles, so there will be no `ClassCastExceptions`): ``` double[] getDoubles(int columnIndex) { return (double[]) data[columnIndex]; } ``` But - Java doesn't allow `Object[]` to be cast to `double[]`. Casting it to `Double[]` is ok because `Double` is an object and not a primitive, but my interface specifies that data will be returned as a `double[]`. So I have two questions: - Is there any way I can get the column data out of the `Object[][]` table and return the array of primitives? - If I do change the interface to return `Double[]`, will there be any performance impact?

Original source