如何将多个ArrayLists放入ArrayList Java中

时间:2014-12-04 01:42:37

标签: java arraylist

我正在尝试创建一个父ArrayList,它包含每个索引的子ArrayList。我的代码涉及使用扫描仪输入填充子列表。请参阅下面的输入示例。

输入描述:第一个输入的整数(int T)告诉我们要生成多少个子ArrayLists,这也可以看作是父ArrayList的大小或者输入了多少行输入跟随。此后的所有行都是我们想要存储在每个子arraylist中的整数。

示例输入

2  
5 4 2 9  
1 3 3 7  

预期产出

SubString 0 contains 5 4 2 9
SubString 1 contains 1 3 3 7

问题描述:我在以下行parentList.add(i, subList.add(q.nextInt()));上收到错误消息。我相信我不遵循语法。我尝试过使用.addAll,但这也不起作用。谁能告诉我我做错了什么?提前感谢您的帮助。

import java.util.*;
import java.io.*;

public class Serials {


    public static void main(String[] args) {

        int T = 0; //First Integer to be inputed 
        //tells me how many sub ArrayLists I will have

        List<List<Integer>> parentList =new ArrayList();  //parentList
        List<Integer> subList = new ArrayList();          //subList

        Scanner q=new Scanner(System.in);
        System.out.println("How many substrings do we need");
        T = q.nextInt(); //Scanning in T Value

        for(int i=0; i<T; i++) {

    subList = new ArrayList<Integer>();
    subList.add(q.nextInt());
    parentList.add(i, subList);  


    }


    System.out.println( "SubString 0 contains" + parentList.get(0));
    System.out.println( "SubString 1 contains" + parentList.get(1));


    }
}

4 个答案:

答案 0 :(得分:0)

java.util.List boolean add(E e)add方法返回boolean,而不是列表,因此您无法添加它。你这样做:

parentList.add(i, true/false)

parentList的类型为List<List<Integer>>。您只能添加List<Integer>类型的项目。例如(至少让它编译)你可以这样做:

subList.add(q.nextInt());
parentList.add(i, subList);

答案 1 :(得分:0)

如前所述,添加列表不会返回列表,而是返回布尔值。

最好先修改内部数组列表,然后在完成所有条目的添加后再添加它。

像这样:

List<Integer> subList;
for(int i=0; i < T; i++) {
    subList = new ArrayList<Integer>();
    //logic for adding things to subList
    parentList.add(i, subList);
}

答案 2 :(得分:0)

首先,不要在声明时初始化你的subList,因为你再次在for循环中初始化它。因此,永远不会使用new ArrayList()对象。

对于你的问题,为什么你在循环中做q.nextInt()一次。这意味着您不希望每个子列表有多个数字。

正如其他人所提到的,你不能像你一样将子列表添加到parentList。

我还将分隔符更改为,而不是空格。

我已经修改了代码,记住这些事情。

import java.util.*;

 public class Serials {


public static void main(String[] args) {

    int T = 0; //First Integer to be inputed 
    //tells me how many sub ArrayLists I will have

    List<List<Integer>> parentList =new ArrayList();  //parentList
    List<Integer> subList = null;          //subList
    String[] strArr = null;

    Scanner q=new Scanner(System.in);
    System.out.println("How many substrings do we need");
    T = q.nextInt(); //Scanning in T Value

    for(int i=0; i<T; i++) {
        System.out.println("Enter comma seperated integer values for list "+(i+1));
        strArr = q.next().split(",");
        subList = new ArrayList<>();
        for(String str : strArr){
            try{
            subList.add(Integer.parseInt(str));
            }catch(NumberFormatException e){
                System.out.println("Are you share that was an integer?");
                System.exit(0);
            }
        }
        parentList.add(i, subList);  
        }
        parentList.add(i, subList);  
    }


    System.out.println( "SubString 0 contains" + parentList.get(0));
System.out.println( "SubString 1 contains" + parentList.get(1));


    }
}

答案 3 :(得分:0)

import java.util.*;
import java.io.*;

public class Serials {


public static void main(String[] args) {        
    int T = 0; //First Integer to be inputed 
    //tells me how many sub ArrayLists I will have

    List<List<Integer>> parentList =new ArrayList();  //parentList
    List<Integer> subList = new ArrayList();          //subList

    Scanner q=new Scanner(System.in);
    System.out.println("How many substrings do we need");
    T = Integer.parseInt(q.nextLine()); //Scanning in T Value

    for(int i=0; i<T; i++) {
    String x = q.nextLine();
    String[] arr= x.split(" ");
    subList = new ArrayList<Integer>();
    for(int j=0;j<arr.length;j++)
    {

    subList.add(Integer.parseInt(arr[j]));

    }
    parentList.add(i, subList);  
    }


    System.out.println( "SubString 0 contains" + parentList.get(0));
    System.out.println( "SubString 1 contains" + parentList.get(1));
    }
}

这将允许输入和输出以您想要的确切格式。希望它有所帮助:)