“你好,我最聪明的学生!”

“你好,瑞希!”

“你是否渴望关于数组的新讨论?好吧,今天我们为你准备了一个!今天我要告诉你关于锯齿状数组和多维数组。”

“听起来嗜血又可怕。”

“别担心,一个真正的程序员总是可以处理数组,即使它露出牙齿。开个玩笑,数组的锯齿反映了不仅可以交换二维数组的行,还可以构造数组的能力然而它必须如此。

“假设您希望二维数组的第一行长度为 10,第二行长度为 50。”

“你真的可以吗?”

“当然!首先,我们创建一个‘容器的容器’——这是第一个数组,它将存储对行数组的引用。这是如何完成的:

int[][] name = new int[height][];

“您只需省略第二个维度,Java 机器就会创建一个容器容器。这就是执行此代码后内存中的内容:

“而且,你已经知道如何创建一维数组 🙂

这就是生成的代码的样子:

// Matrix of important data
int[][] matrix = new int[2][];
matrix[0] = new int[10];
matrix[1] = new int[50]
二维数组

第零行是一个10元素数组
第一行是一个50元素数组

“我们刚刚创建了一个所谓的“锯齿状”阵列。它的边缘粗糙且不规则。

“而如果我们现在想在屏幕上显示这个数组的所有元素,那么数组的length数组就派上用场了:毕竟数组的行的长度是不同的。

“对了,你能告诉我如何在我们的示例中找到'container of containers'的长度吗?它也是一个数组对象,这意味着它有一个长度。”

“大概吧matrix.length?”

“完全正确!对于形成行的数组,我们将用于matrix[0].length第零行。”

“首先,这意味着我们会使用matrix[1].length?”

“非常正确,在第一种情况下,执行命令会产生10,而在第二种情况下,结果将是50。

使用二维数组

“现在让我们尝试显示一个二维数组:

int[][] matrix = new int[3][];
matrix[0] = {1, 2, 3, 4, 5, 6};
matrix[1] = {1, 2, 3};
matrix[2] = {1};
for (int i = 0; i < matrix.length; i++)
{
   for (int j = 0; j < matrix[i].length; j++)
      System.out.print( matrix[i][j] + " " );
   System.out.println();
}
创建数组
用值填充数组


迭代数组行的外循环。
迭代单行单元格的内部循环。

“如您所见,我们需要两个嵌套循环。第一个我们称为 outer,第二个称为inner

“在外部循环(i变量)中,我们依次遍历构成二维数组的所有行(数组)。每个值对应于i具有该索引的行。

“在内部循环(j变量)中,我们遍历行中的所有单元格。由于内部循环,由一个一维数组的值组成的一行将显示在屏幕上。

“这是将要显示的内容:

数组的一行被处理 1 2 3 4 5 6
处理数组的两行 1 2 3 4 5 6
1 2 3
处理数组的三行 1 2 3 4 5 6
1 2 3
1

多维数组

“朋友!你有没有猜到,如果有二维的阵法,那么也可以有三维的?

“我只是在想这个,但不好意思问。

“是的,你可以创建一个三维数组,一般来说,任何维度的数组。这样的数组被称为‘多维’。为了好玩,让我们创建一个有 4 个维度的多维数组。

 int[][][][] matrix = new int[2][3][4][5];

“这似乎不是很难!”

“您还没有尝试手动创建一个!在这里,让您大饱眼福:

int[][][][] matrix;
matrix = new int[2][][][];                   // Create a 2-element array of references to references to references
for (int i = 0; i < matrix.length; i++)
{
  matrix[i] = new int[3][][];                // Create a 3-element array of references to references
  for (j = 0; j < matrix[i].length; j++)
  {
    matrix[i][j] = new int[4][];             // Create a 4-element array of references
    for (k = 0; k < matrix[i][j].length; k++)
      matrix[i][j][k] = new int[5];          // Create 5-element arrays of integers
  }
}

“这只是创建一个数组!然后你还需要以某种方式使用它。”

“我收回我说过的话。与他们合作并不容易。但这是可能的。”

“既然有可能,这里有一个额外的任务。编写代码来显示三维数组中的所有值。你知道的足够多了。最主要的是要有耐心和细心。或者可能是足智多谋(有一个秘密位将帮助您在一行中解决此任务的知识)。但无论您如何解决它,请解决它。”

“谢谢你,Rishi。我会试试的。”