Java 是否可以引用作为参数传递的二维数组的行/列的长度而不使用其他参数?
假设我们有一个具有以下原型的函数:Java 是否可以引用作为参数传递的二维数组的行/列的长度而不使用其他参数?,java,matrix,parameter-passing,multidimensional-array,Java,Matrix,Parameter Passing,Multidimensional Array,假设我们有一个具有以下原型的函数: public static funWithMatrices(int[][] aux) 现在,我们可以做: int i = aux.length; 获取aux中的行数。同样,我们可以这样做: int j = aux[i].length; 仅获取每列的长度。但是有没有更好的方法呢?当然,编译器不可能知道您传递的是一个矩阵,而不是具有不同行/列长度的任意数组,但是有可能以某种方式约束它吗 我更感兴趣的是一些已经内置的东西,而不是用给定的约束创建我自己的matr
public static funWithMatrices(int[][] aux)
现在,我们可以做:
int i = aux.length;
获取aux
中的行数。同样,我们可以这样做:
int j = aux[i].length;
仅获取每列的长度。但是有没有更好的方法呢?当然,编译器不可能知道您传递的是一个矩阵,而不是具有不同行/列长度的任意数组,但是有可能以某种方式约束它吗
我更感兴趣的是一些已经内置的东西,而不是用给定的约束创建我自己的matrix
对象。虽然这很容易做到,但这并不是我想要的
潜行编辑:我意识到也有可能将原型重新定义为类似于int[][]aux,n,m
,但这也不是我想要的。您可以利用Java的面向对象编程特性,使用getColumnLength()
和getRowLength()创建自己的矩阵类
已定义的方法,或者更好地查看并利用现有的矩阵API类和函数还有一个库,可以按如下方式使用:
public static void funWithMatrices(Matrix aux) {
int rows = aux.rows();
int columns = aux.columns();
// do what you want with matrix
// for example multyply each cell by 2 if it's symmetric matrix
if (aux.is(Matrices.SYMMETRIC_MATRIX)) {
Matrix aux2 = aux.transform(Matrices.asMulFunction(2.0));
}
}
// a caller
funWithMatrices(new Basic2DMatrix(new double[][]{
{ 1.0, 2.0 },
{ 3.0, 4.0 }
}));