0

假设我们有一个具有以下原型的函数:

public static funWithMatrices(int[][] aux)

现在,我们可以这样做:

int i = aux.length;

获取 in 的rows数量aux。同样,我们可以这样做:

int j = aux[i].length;

仅获取每列的长度。但是有没有更好的方法来做到这一点?当然,编译器不可能知道你传递的是一个矩阵而不是一个具有不同行/列长度的任意数组,但是有可能以某种方式限制它吗?

我会对已经内置的东西更感兴趣,而不是matrix使用给定的约束创建我自己的对象。虽然这很容易做到,但这并不是我要问的。

偷偷编辑:我意识到也有可能将原型重新定义为类似的东西int[][] aux, n, m,但这也不是我要问的。

4

2 回答 2

0

还有la4j库,可以按如下方式使用:

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 } 
}));
于 2013-09-23T04:48:27.923 回答
0

您可以利用 Java 的面向对象编程特性并创建自己的 Matrix 类getColumnLength()getRowLength()定义方法,或者更好地查看Apache Commons Math 库并利用现有的 Matrix API 类和函数

于 2013-09-23T04:26:52.387 回答