📜  如何在Java中迭代二维列表(列表列表)

📅  最后修改于: 2022-05-13 01:55:22.476000             🧑  作者: Mango

如何在Java中迭代二维列表(列表列表)

给定一个 2D 列表,任务是在Java中迭代这个 2D 列表。

二维列表(列表列表)
2D列表是指列表的列表,即列表的每一行都是另一个列表。

[
  [5, 10],
  [1], 
  [20, 30, 40]
] 

迭代 2D 列表:在Java中有两种迭代列表的方法。

  1. 使用循环遍历列表列表:
    • 获取迭代的二维列表
    • 我们需要两个 for-each 循环来成功地迭代 2D 列表。
    • 在第一个 for-each 循环中,二维列表的每一行将被视为一个单独的列表
      for (List list : listOfLists)
       { }
      
    • 在第二个 for-each 循环中,每行中列表的每一项都会被单独取出
      for (K item : list)
       { }
      
    • 因此我们可以对这个项目进行任何操作。在这里,我们正在打印该项目。

    下面是上述方法的实现:

    // Java code to demonstrate the concept of
    // list of lists using loop
      
    import java.util.*;
    public class List_of_list {
      
        // Iterate the 2D list using loop
        // and print each element
        public static  void
        iterateUsingForEach(List > listOfLists)
        {
      
            // Iterate the 2D list
            // and print each element
            System.out.println("[");
      
            for (List list : listOfLists) {
                System.out.print("  [");
      
                for (K item : list) {
                    System.out.print("  "
                                     + item
                                     + ", ");
                }
                System.out.println("], ");
            }
            System.out.println("]");
        }
      
        // Driver code
        public static void main(String[] args)
        {
      
            // List of Lists
            ArrayList > listOfLists
                = new ArrayList >();
      
            // Create N lists one by one
            // and append to the list of lists
            List list1
                = new ArrayList();
            list1.add(5);
            list1.add(10);
            listOfLists.add(list1);
      
            List list2
                = new ArrayList();
            list2.add(1);
            listOfLists.add(list2);
      
            List list3
                = new ArrayList();
            list3.add(20);
            list3.add(30);
            list3.add(40);
            listOfLists.add(list3);
      
            // Iterate the 2D list
            iterateUsingForEach(listOfLists);
        }
    }
    

    输出:

    [
     [ 5,  10, ], 
     [ 1, ], 
     [ 20,  30,  40, ], 
    ]
    
  2. 使用迭代器迭代列表列表:
    • 获取迭代的二维列表
    • 我们需要两个迭代器来成功地迭代二维列表。
    • 第一个迭代器将 2D 列表的每一行作为单独的列表进行迭代
      Iterator listOfListsIterator = listOfLists.iterator();
      
    • 2D列表的每一行都可以通过Iterator的next()方法得到
      listOfListsIterator.next();
      

      但是 next() 方法将 Iterator 作为 Object 的对象返回。因此我们需要将这个返回的对象转换成一个列表。

      list = (List)listOfListsIterator.next();
      
    • 第二个迭代器将分别迭代每一行中列表的每个项目
      Iterator eachListIterator = list.iterator();
      
    • 因此我们可以对这个项目进行任何操作。在这里,我们正在打印该项目。

    下面是上述方法的实现:

    // Java code to demonstrate the concept of
    // list of lists using iterator
      
    import java.util.*;
      
    class List_of_list {
      
        // Iterate the 2D list using Iterator
        // and print each element
        public static  void
        iterateUsingIterator(List > listOfLists)
        {
            // Iterator for the 2D list
            Iterator listOfListsIterator
                = listOfLists.iterator();
      
            System.out.println("[");
            while (listOfListsIterator.hasNext()) {
      
                // Type cast next() method
                // to convert from Object to List
                List list = new ArrayList();
      
                list = (List)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 > listOfLists
                = new ArrayList >();
      
            // Create N lists one by one
            // and append to the list of lists
            List list1
                = new ArrayList();
            list1.add(5);
            list1.add(10);
            listOfLists.add(list1);
      
            List list2
                = new ArrayList();
            list2.add(1);
            listOfLists.add(list2);
      
            List list3
                = new ArrayList();
            list3.add(20);
            list3.add(30);
            list3.add(40);
            listOfLists.add(list3);
      
            // Iterate the 2D list
            iterateUsingIterator(listOfLists);
        }
    }
    

    输出:

    [
     [ 5,  10, ], 
     [ 1, ], 
     [ 20,  30,  40, ], 
    ]