如何在Java中迭代二维列表(列表的列表)?


二维列表或列表的列表是一种数据结构,用于以二维格式存储数据集合。

在这个列表的列表中,每个内部列表表示二维列表中的一行。

例如,二维列表可以用来存储棋盘的数据,其中列表中的每个元素对应棋盘上的一个方格。

使用的方法

二维列表可以通过以下两种方法之一进行迭代:

  • 使用循环

  • 使用迭代器

方法1:使用循环

您可以通过两种方法遍历二维列表(列表的列表)。

第一种方法是使用嵌套的for-each循环。为此,您首先需要检索要迭代的二维列表。然后,您可以使用两个for-each循环有效地遍历列表的元素。

在第一个for-each循环中,二维列表的每一行都被视为一个单独的列表。您可以使用变量“list”来表示二维列表的每一行:

语法

for (List<K> list : listOfLists) {
   // Perform operations on each row (list) here
}

使用第二个for-each循环,您可以分别访问每一行中的每个项目。这里,变量“item”表示每个项目:

语法

for (K item : list) {
   // Perform operations on each item here
}

通过使用这些嵌套的for-each循环,您可以有效地迭代二维列表并根据您的需要控制其元素。

for()

这段代码演示了如何使用嵌套的for-each循环在Java中迭代二维列表(列表的列表)。它以所需的格式打印每个内部列表的元素。

算法

  • 步骤1 - 导入代码所需的库。

  • 步骤2 - 创建“iterateUsingForEach”函数,该函数接受列表的列表作为参数。

  • 步骤3 - 打印一个开括号“[”以指示列表的开始。

  • 步骤4 - 遍历输入listOfLists中的每个列表。

  • 步骤5 - 对于每个列表,打印一个开括号“[”以显示内部列表的开始。

  • 步骤6 - 迭代当前列表中的每个项目。

  • 步骤7 - 打印每个项目。添加逗号以分隔它们。

  • 步骤8 - 打印一个闭括号“]”以指示内部列表的结束,以及一个逗号和一个空格。

  • 步骤9 - 打印一个闭括号“]”以指示外部列表的结束。

  • 步骤10 - 退出函数。

  • 步骤11 - 在主函数中:

    • 创建一个名为“listOfLists”的空列表来保存整数列表。

    • 创建四个单独的列表并用整数填充它们。

    • 将每个单独的列表添加到“listOfLists”。

  • 步骤12 - 调用“iterateUsingForEach”函数,并将“listOfLists”作为参数传递,以所需的格式打印列表。

  • 步骤13 - 该方法的输出是“listOfLists”的打印版本。

示例

import java.util.*;

public class List_of_list {

   public static <K> void iterateUsingForEach(List<List<K>> listOfLists) {

      System.out.println("[");

      for (List<K> list : listOfLists) {
         System.out.print(" [");

         for (K item : list) {
            System.out.print(" " + item + ", ");
         }
         System.out.println("], ");
      }
      System.out.println("]");
   }

   public static void main(String[] args) {

      // List of Lists
      ArrayList<List<Integer>> listOfLists = new ArrayList<List<Integer>>();

      List<Integer> list1 = new ArrayList<Integer>();
      list1.add(50);
      list1.add(100);
      listOfLists.add(list1);

      List<Integer> list2 = new ArrayList<Integer>();
      list2.add(2);
      listOfLists.add(list2);

      List<Integer> list3 = new ArrayList<Integer>();  // Corrected variable name
      list3.add(200);
      list3.add(300);
      list3.add(400);
      listOfLists.add(list3);

      List<Integer> list4 = new ArrayList<Integer>();  
      list4.add(500);
      listOfLists.add(list4);

      iterateUsingForEach(listOfLists);
   }
}

输出

[
 [50, 100, ], 
 [2, ], 
 [200, 300,  400, ], 
 [500, ], 
]

方法2:使用迭代器

在Java中使用迭代器迭代列表的列表(二维列表),涉及以下几个步骤:

  • 检索您需要迭代的二维列表。

  • 创建主迭代器以将二维列表的每一行都视为单独的列表进行迭代。如何为二维列表的每一行获取单独的列表?您可以使用迭代器的next()方法。

语法

Iterator<List<K>> listOfListsIterator = listOfLists.iterator();

需要注意的是,next()方法返回迭代器作为Object对象。因此,您必须将返回的对象转换为列表:

语法

List<K> list = (List<K>) listOfListsIterator.next();

创建一个第二个迭代器,一次遍历每一行中的每个项目。可以通过对每个单独列表使用iterator()方法来获取迭代器:

语法

Iterator<K> eachListIterator = list.iterator();

对每个项目执行任何所需的运算。

hasNext()

这段代码演示了如何在Java中使用迭代器遍历二维列表。它以方括号打印每个内部列表的元素,并用逗号分隔。

算法

  • 步骤1 - 使用listOfLists变量和iterator()函数检索listOfLists变量的迭代器。

  • 步骤2 - 创建一个循环,遍历迭代器。该循环一直持续到迭代器的hasNext()方法返回true。

  • 步骤3 - 获取迭代器的下一个元素。我们使用迭代器的next()方法来做到这一点。

  • 步骤4 - 验证元素是否为列表。如果是,则重复在元素上运行iterateUsingIterator()函数。否则,只需打印元素。

  • 步骤5 - 重复步骤3-4,直到迭代器耗尽。

示例

import java.util.*;

public class List_of_list {

   public static <K> void
   iterateUsingIterator(List<List<K> > listOfLists){
      Iterator listOfListsIterator
      = listOfLists.iterator();

      System.out.println("[");
      while (listOfListsIterator.hasNext()) {

         // Type cast next() method for converting from Object to List<K>
         List<K> list = new ArrayList<K>();

         list = (List<K>)listOfListsIterator.next();

         // Iterator for list
         Iterator eachListIterator
         = list.iterator();

         System.out.print(" [");
         while (eachListIterator.hasNext()) {
            System.out.print(" " + eachListIterator.next() + ", ");
         }
         System.out.println("], ");
      }
      System.out.println("]");
   }

   // Driver code
   public static void main(String[] args){

      // List of Lists
      ArrayList<List<Integer> > listOfLists
      = new ArrayList<List<Integer> >();

      List<Integer> list1
      = new ArrayList<Integer>();
      list1.add(150);
      list1.add(210);
      listOfLists.add(list1);

      List<Integer> list2
      = new ArrayList<Integer>();
      list2.add(1);
      listOfLists.add(list2);

      List<Integer> list3
      = new ArrayList<Integer>();
      list3.add(200);
      list3.add(300);
      list3.add(400);
      listOfLists.add(list3);

      iterateUsingIterator(listOfLists);
   }
}

输出

[
 [ 150,  210, ], 
 [ 1, ], 
 [ 200,  300,  400, ], 
]

结论

迭代二维列表(通常称为列表的列表)允许Java程序员分析以二维方式存储的数据。

类似于棋盘,它提供了一种灵活的结构来组织和导航信息。迭代二维列表可以通过两种方法之一完成:使用循环或迭代器。这两种方法都允许您遍历列表的行和列,以便有效地进行数据操作和分析。

更新于:2023年10月18日

2K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告