如何在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+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告