📜  java中的二维数组列表(1)

📅  最后修改于: 2023-12-03 15:02:00.356000             🧑  作者: Mango

Java中的二维数组列表

在Java中,二维数组列表是一个非常有用的数据结构,它可以保存一个指定类型的数据集合,并以二维数组的方式来进行组织和管理。

什么是二维数组列表?

二维数组列表实际上是一个嵌套的数据结构,它由多个一维数组所组成,并且每个一维数组的长度可以不同。我们可以把它想象成一个表格,其中每行表示一个一维数组,每列表示这个一维数组中的数据元素。

如何定义一个二维数组列表?

在Java中,我们可以使用 ArrayList<ArrayList> 类型来定义一个二维数组列表,其中 T 表示我们所定义的数据类型。例如:

ArrayList<ArrayList<Integer>> grid = new ArrayList<ArrayList<Integer>>();

这样就创建了一个空的二维数组列表 grid,并且其中的每个元素都是一个空的一维数组列表。如果我们要访问其中的某一个元素,可以使用 grid.get(row).get(col) 的方式来获取,其中 row 表示行号,col 表示列号。

如何向二维数组列表中添加数据?

添加数据时,我们需要先指定要添加的行和列,然后再将数据添加到对应的位置。例如,我们要在第2行第3列处添加一个整数 5,可以使用以下代码:

grid.get(1).add(2, 5);

其中,get(1) 表示获取第2行的一维数组列表,add(2, 5) 表示将整数 5 添加到该数组列表的第3个位置处。

如何遍历二维数组列表?

遍历二维数组列表时,我们需要嵌套使用两个 for 循环,一个用来遍历行,一个用来遍历列。例如,我们要遍历整个数组列表,并输出其中的每个元素,可以使用以下代码:

for (ArrayList<Integer> row : grid) {
    for (int num : row) {
        System.out.print(num + " ");
    }
    System.out.println();
}

其中,第一个循环用来遍历所有的行,第二个循环用来遍历某一行中的所有列。注意,在遍历每一行时,我们要先输出该行中的所有元素,然后再输出一个换行符。

二维数组列表的优点

与普通的二维数组相比,二维数组列表具有以下优点:

  • 无需指定二维数组大小:在创建二维数组列表时,无需指定每个一维数组的长度,可以动态扩展、缩小,非常灵活。
  • 方便添加、删除元素:由于每个元素都是一个单独的一维数组,因此添加、删除元素非常方便,只需对每个一维数组进行相应的操作即可。
  • 支持泛型:二维数组列表可以支持任意类型的数据,比如整数、浮点数、字符串等。
二维数组列表的缺点

虽然二维数组列表具有很多优点,但也存在一些缺点,主要包括:

  • 访问某个元素的时间复杂度为 O(1):对于普通的二维数组,我们可以通过索引直接访问每个元素,而对于二维数组列表,我们需要通过两个索引才能访问某个元素,时间复杂度相对较高。
  • 内存占用较大:由于每个元素都是一个独立的一维数组,因此在内存中的占用比普通的二维数组要大。