Trong Java 8 bạn có thể cast một mảng 1 chiều của int
s vào một mảng của double
s:
double[] singleDimensionDoubleArray =
Arrays.stream(singleDimensionIntArray).asDoubleStream().toArray()
do đó tôi đã viết những gì tôi cho rằng sẽ là một phiên bản nhanh hơn bằng cách lặp qua hàng:
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();
}
Tôi vừa mới đăng câu trả lời này nhưng nghĩ rằng tôi sẽ đăng một số chỉ số về tốc độ lặp đi lặp lại một cách ngây thơ trên mọi phần tử. Hóa ra là khoảng 10x chậm hơn! Tôi đã thử nghiệm nó với một mảng 10000x1000 của số không. Tôi cho rằng đó là sự tạo ra vật thể thêm gây ra sự chậm lại.
Trừ khi người khác có thể chứng minh điều ngược, tôi nghĩ rằng giải pháp đơn giản nhất thực sự là nhanh nhất:
for (int row = 0; row < iArray.length; row++) {
for (int column = 0; column < iArray[0].length; column++) {
dArray[row][column] = (double) iArray[row][column];
}
}
Nguồn
2016-09-14 16:10:51
Bạn có chắc chắn ... ??? – Lion
Vâng. Nguồn của tôi là nghiên cứu của riêng tôi về chủ đề này. ;) Googling xung quanh sẽ đưa bạn đến cùng một kết luận. – Vache
+1. Đây là cách duy nhất. Thỏa thuận. –