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