В Java 8 вы можете отбрасывать 1-мерный массив int
с в массив double
с:
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];
}
}
Вы уверены, что ... ??? – Lion
Да. Мои источники - это мои собственные исследования по этому вопросу. ;) Гуглинг вокруг приведет вас к такому же выводу. – Vache
+1. Это единственный способ. По рукам. –