如何在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程式設計師分析以二維方式儲存的資料。
類似於棋盤,它提供了一種靈活的結構來組織和導航資訊。迭代二維列表可以透過兩種方法之一完成:使用迴圈或迭代器。這兩種方法都允許您遍歷列表的行和列,以便有效地進行資料操作和分析。