Java - 在矩阵行或列上应用 vector 方法

标签 java arrays methods parameters

我正在编写一个对 vector (一维数组)执行某些操作的方法。我想将它应用于矩阵的行和列(二维数组:行数组,每行都是一个数组)。我想知道最好的方法。

vector 方法可能需要额外的参数。例如,它可以实现排序算法(我的没有,但它足够复杂)。

现在,如果 matrix 是一个矩阵,并且我想使用第 4 行的方法,我只需将 matrix[3] 插入到该方法中,因此当方法访问a[n],最终将访问matrix[3][n]。但将其应用到列上并不是那么简单,因为每当该方法访问 a[n] 时,我都希望它访问 matrix[n][7] (在第 8 列的情况)。

我过去曾尝试应用 vector 方法来访问list[index[n]](listindex是 vector ) 每当该方法访问 a[n] 时。我当时用的是复制的方式(下面没有1)。

我想到的方法(没有优雅的):

  1. 创建一个 vector ,将列的内容复制到 vector 中,应用该方法,然后将 vector 的内容复制回矩阵的列(并处理 vector/重新使用它以应用于稍后再写一篇专栏)。

  2. 复制该方法,一个使用 a[n],其中 a 是 vector 参数,另一个使用 a[n] [m],其中 a 是矩阵参数,m 是 int 参数。

  3. 设计该方法,使其可以使用 vector 或矩阵列,但是每次访问元素时都允许两种情况,因此该方法的工作将会变得复杂。

    <
  4. 也许参数可以是函数f(无论如何实现),因此该方法使用f(n)?然后,对于 vector vector,给出的f使得f(n)返回(对)vector[n]<的引用。对于矩阵 matrix 的行,f(n) 返回 matrix[row][n],对于列 f(n ) 返回矩阵[n][列]

最佳答案

定义一个抽象(假设您的矩阵包含整数):

public interface IntVector {
    public int size();
    public int get(int index);
    public void set(int index, int value);
}

更改您的算法,使其使用 IntVector 而不是数组。

然后定义两个实现:

public class RowVector implements IntVector {

    private final int[] row;

    public RowVector(int[] row) {
        this.row = row;
    }

    @Override
    public int size() {
        return row.length;
    }

    @Override
    public int get(int index) {
        return row[index];
    }

    @Override
    public void set(int index, int value) {
        row[index] = value;
    }
}

public class ColumnVector implements IntVector {
    private final int[][] matrix;
    private final int column;

    public ColumnVector(int[][] matrix, int column) {
        this.matrix = matrix;
        this.column = column;
    }

    @Override
    public int size() {
        return matrix.length;
    }

    @Override
    public int get(int index) {
        return matrix[index][this.column];
    }

    @Override
    public void set(int index, int value) {
        matrix[index][this.column] = value;
    }
}

关于Java - 在矩阵行或列上应用 vector 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53456381/

相关文章:

java - cucumber 背景中的数据表

java - 如何指定Jlist宽度?

javascript - 如何获取输入文件数组的所有值

java - "java.lang.ArrayIndexOutOfBoundsException"数组逻辑问题

c++ - 为方法提供一个空实例是一种好习惯吗?

Java:如何在反转分割字后将分隔符读回字符串?

java - 处理 Java 和 C# REST API 之间的 JSON 互操作

c - 在 C 中,无法获取数组来保存新值

c - 为什么在第一个代码中它不起作用但在第二个代码中起作用? - 逆波兰表示法

iphone - 如何从iOS中的另一个类调用方法?