我有一个方法只能获得double[][]
我希望传递给int[][]
的方法,在java中有一个简单的方法吗,就像这样简单:
int [][] iArray = {
{ 1, 2, },
{ 5, 6, }
};
double [][] dArray = (double[][]) iArray ; ???
答案 0 :(得分:19)
不幸的是,构建数组的唯一方法是迭代遍历每个元素并逐个转换它们,同时重新插入新的double[][]
数组。
没有捷径。
答案 1 :(得分:2)
不,这不是正确的输入。 int []是一个类型,double []是一个类型,它们没有关系,所以不允许这样的赋值。因此,没有办法施展这个。
您必须复制元素(您可以在不转换的情况下将int指定给double)。
答案 2 :(得分:0)
你不能施放它们,双打在内存中的排列不同于整数,这不是简单改变名字的情况。
编辑:只有当double是int的超类或子类时,才可能。
答案 3 :(得分:0)
你可以这样做:
int[][] intarray = {{1, 2}, {5, 6}};
double[][] doublearray = new double[intarray.length][intarray[0].length];
for(int i = 0; i < intarray.length; i++)
{
for(int j = 0; j < intarray[0].length; j++)
doublearray[i][j] = (double) intarray[i][j];
}
编辑:正如Andreas_D所指出的,这只有在所有行都具有相同长度时才有效,如果你想要变量长度,你必须遍历第二个for循环以获得可变数量的列。
答案 4 :(得分:0)
嗯,用Java 8编写的代码值得称为快捷方式吗?
import java.util.Arrays;
// ...
/// Cast!
int[][] int2DArray = {{3, 1}, {3, 3, 7}, {}};
Object[] arrayOfUntypedArraies = Arrays.stream(int2DArray).map(intArray -> Arrays.stream(intArray).asDoubleStream().toArray()).toArray();
double[][] double2DArray = Arrays.copyOf(arrayOfUntypedArraies, arrayOfUntypedArraies.length, double[][].class);
/// Print!
System.out.println(Arrays.deepToString(int2DArray));
// [[1, 2], [5, 6, 7], []]
System.out.println(Arrays.deepToString(double2DArray));
// [[1.0, 2.0], [5.0, 6.0, 7.0], []]
答案 5 :(得分:0)
在Java 8中,您可以将$scope.$apply()
的一维数组转换为app.controller('loginctrl',['$rootScope','$scope','$http','$state','$cookies',function($scope,$rootScope,$http,$state,$cookies){
var cookietoken= $cookies.get('Token');
if(cookietoken)
{
alert('You are already logged in!');
$state.go('home');
}
else
{
$scope.user={
username:"",
password:"",
rememberme:""
};
$scope.showerror=false;
$scope.login = function(){
$http({
method:"POST",
url:$rootScope.apiend+'login',
data:$scope.user
})
.success(function(result){
console.log(result);
}).error(function(){
alert('something looks wrong.');
});
};
}
s的数组:
int
因此,我通过循环遍历行写了我认为更快的版本:
double
我正准备发布这个答案,但我想发布一些关于每个元素天真循环多快的指标。事实证明它在 10x慢附近!我用10000x1000的零数组测试了它。我想这是造成减速的额外对象创建。
除非别人能证明不是这样,否则我认为最简单的解决方案实际上是最快的:
double[] singleDimensionDoubleArray =
Arrays.stream(singleDimensionIntArray).asDoubleStream().toArray()