Brian Brian - 1 year ago 86
Java Question

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

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:


  1. Is there any way I can get the column data out of the
    Object[][]
    table and return the array of primitives?

  2. If I do change the interface to return
    Double[]
    , will there be any performance impact?


Answer Source

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.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download