如何在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