Java 如何将二维数组转换为以值为索引的一维数组?

Java 如何将二维数组转换为以值为索引的一维数组?,java,Java,我有一个由任意整数N动态创建的2D数组。最初,我需要将数组中的所有值设置为一个表示该数组“未初始化”的值,其中我使用数字“-1”。但是,我想将此2D数组转换为1D数组,并将每个值指定为等于新1D数组中的索引 public class Percolation { private int[][] id; private int[] array1D; private int blocked = -1; //a number that doesn't exist in the array //

我有一个由任意整数N动态创建的2D数组。最初,我需要将数组中的所有值设置为一个表示该数组“未初始化”的值,其中我使用数字“-1”。但是,我想将此2D数组转换为1D数组,并将每个值指定为等于新1D数组中的索引

public class Percolation {

private int[][] id;
private int[] array1D;
private int blocked = -1;   //a number that doesn't exist in the array

// create N-by-N grid, with all sites blocked
public Percolation(int N){

    id = new int[N][N];
    for (int k = 0; k < N; k++)
    { for (int i = 0; i < N; i++) id[k][i] = blocked; } 
}


// open site (row i, column j) if it is not already
public void open(int i, int j){


}
公共类过滤{
私有int[][]id;
私有int[]阵列1d;
private int blocked=-1;//数组中不存在的数字
//创建N-by-N网格,并阻止所有站点
公共渗滤(int N){
id=新整数[N][N];
对于(int k=0;k
在open方法中,它应该将给定索引处的值更改为1D数组中的相应索引。例如:

[-1][1]

[-1][1]

届时将成为:

[0][1][2][3]


不幸的是,由于这是家庭作业,我不确定如何共享网格大小“N”,以便能够创建一个新的1D数组,索引作为值。

我不确定这是否有助于回答您的问题,但以下算法用于为表示二维矩阵的一维矩阵编制索引:

colSize*row+col
其中colSize是最大列数

例如,以下矩阵:

 [0, 1, 2, 3;
  4, 5, 6, 7;
  8, 9, 10, 11]
因此,要访问第1行第3列(即索引编号6),可通过以下方式找到:

3*1+3 = 6;

因此,您应该能够使用此公式仅用列数和行数填写一维矩阵。

我不确定这是否有助于回答您的问题,但以下算法用于为表示二维矩阵的一维矩阵编制索引:

colSize*row+col
其中colSize是最大列数

例如,以下矩阵:

 [0, 1, 2, 3;
  4, 5, 6, 7;
  8, 9, 10, 11]
因此,要访问第1行第3列(即索引编号6),可通过以下方式找到:

3*1+3 = 6;

因此,您应该能够使用此公式仅使用列数和行数填写1D矩阵。

您可以使用
id.length
在类中获得网格大小
N
,考虑到N是构造函数的给定参数:

public class Percolation {
     private int size;
     //...

    public Percolation(int N){
         size = N;
         //...    
    }
}

变量的作用域是您的所有类。如果将其设置为公共,您也可以使用p.size访问它,其中p是渗流的实例,考虑到N是构造函数的给定参数,您也可以这样做:

public class Percolation {
     private int size;
     //...

    public Percolation(int N){
         size = N;
         //...    
    }
}

变量的范围是你所有的类。如果你把它设置为公共的,你也可以用p.size访问它,其中p是关于你最后一段的渗流的一个实例:你用
id.length
@halex获得你类中的网格大小
N
,谢谢,这正是我所需要的。我会给你一个答案,希望你能接受关于你的最后一段:你用
id.length
@halex获得你班上的网格大小
N
,谢谢,这正是我所需要的。我会给你一个答案,希望你能接受:)谢谢Ben。我知道那么多,但我的问题是得到halex提到的网格大小。谢谢Ben。我知道那么多,但我的问题是得到halex提到的网格大小。我不敢相信它这么简单!再次感谢!我不敢相信它这么简单!再次感谢!