В Java 8 вы можете преобразовать одномерный массив int
s в массив double
s:
double[] singleDimensionDoubleArray =
Arrays.stream(singleDimensionIntArray).asDoubleStream().toArray()
Поэтому я написал то, что, как я предполагал, будет более быстрой версией с помощью циклапо строкам:
int[][] iArray = {
{1, 2,},
{5, 6,}
};
double[][] dArray = new double[iArray.length][];
for (int row = 0; row < iArray.length; row++) {
dArray[row] = Arrays.stream(iArray[row]).asDoubleStream().toArray();
}
Я как раз собирался опубликовать этот ответ, но подумал, что опубликую некоторые метрики о том, насколько быстрее это было наивно зацикливаться на каждом элементе.Оказывается, это было примерно 10x медленнее !Я проверил это с массивом нулей 10000x1000.Я полагаю, что создание дополнительного объекта вызывает замедление.
Если кто-то еще не может доказать обратное, я думаю, что самое простое решение на самом деле самое быстрое:
for (int row = 0; row < iArray.length; row++) {
for (int column = 0; column < iArray[0].length; column++) {
dArray[row][column] = (double) iArray[row][column];
}
}