如何在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程序员分析以二维方式存储的数据。
类似于棋盘,它提供了一种灵活的结构来组织和导航信息。迭代二维列表可以通过两种方法之一完成:使用循环或迭代器。这两种方法都允许您遍历列表的行和列,以便有效地进行数据操作和分析。
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP