【问题标题】:Not able to access individual element from sublist无法从子列表访问单个元素
【发布时间】:2021-07-20 04:45:15
【问题描述】:

我是java 的初学者。我想在sublist中一个一个地读取元素。

public class ListFirst {
    
    public static void main(String[] args) {
        
        List<Integer>list1= Arrays.asList(10,20,30,40);
        List<Integer>list2=Arrays.asList(100,200,300,400);
        List<List<Integer>>bigList= new ArrayList<>();
       
         // I want to access an element of bigList one by one. how to do that?
        
    }

}

如果没有sublist,我可以使用for loop 打印到list.size()list.get(),但这里的元素是列表本身..所以我不知道如何阅读。你能帮我解决这个问题吗?

【问题讨论】:

  • 对不起,我不明白你在做什么。您定义了一个列表列表。但是你想用它来实现什么?
  • 我想从 bigList 中一一提取元素。表示打印 10,20,30,40,100,200,300,400。 .
  • 使用两个嵌套的for循环,外部循环遍历bigList,提取子列表,内部从当前子列表中读取元素

标签: java arrays list arraylist collections


【解决方案1】:

我修改了你的代码来实现你想做的:


public class ListFirst {
    
    public static void main(String[] args) {
        
        List<Integer>list1= Arrays.asList(10,20,30,40);
        List<Integer>list2=Arrays.asList(100,200,300,400);

        List<List<Integer>>bigList= new ArrayList<>();

        bigList.add(list1);
        bigList.add(list2);
       
        for (List<Integer> list : bigList) {
            for (Integer i : list) {
                System.out.print(i.intValue() + " ");
            }
        }
        
    }

}

另一种方法是不使用嵌套的List 来存储您的Integers:

public static void main(String[] args) {
    
    List<Integer>list1= Arrays.asList(10,20,30,40);
    List<Integer>list2=Arrays.asList(100,200,300,400);

    // bigList is a list of Integers not list of lists
    List<Integer>bigList= new ArrayList<>();

    bigList.addAll(list1); // add all elements from list1
    bigList.addAll(list2); // add all elements from list2
    
    for (Integer i : bigList) {
        System.out.print(i.intValue() + " ");
    }
}

【讨论】:

    【解决方案2】:

    假设列表已经添加到bigList,您可以使用for-each loop对其进行迭代,如下所示:

    bigList.add(list1);
    bigList.add(list2);
    
    for (List<Integer> list : bigList) {
        System.out.println(list);
    }
    

    DEMO

    使用传统循环,可以打印bigList,如下图:

    for (int i = 0; i < bigList.size(); i++) {
        System.out.println(bigList.get(i));
    }
    

    【讨论】:

      【解决方案3】:

      您可以执行以下操作:

      bigList.stream()
          .flatMap(Collection::stream)
          .forEach(x -> System.out.println(x));
      

      输出:

      10
      20
      30
      40
      100
      200
      300
      400
      

      【讨论】:

        猜你喜欢
        • 2020-10-30
        • 1970-01-01
        • 2018-12-15
        • 2011-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多