簡體   English   中英

如何將多個ArrayList放入ArrayList Java中

[英]How to put Multiple ArrayLists inside an ArrayList Java

我正在嘗試創建一個父ArrayList,其中包含每個子索引的子ArrayList。 我的代碼涉及使用“掃描儀輸入”填充子列表。 請參見下面的輸入示例。

輸入描述:輸入的第一個整數( int T )告訴我們要創建多少個子ArrayList,這也可以看作是父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));


    }
}

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);

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

最好先修改內部數組列表,然后在完成所有條目的添加后再添加它。

像這樣:

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

首先,不要在聲明時初始化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));


    }
}
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));
    }
}

這將允許以所需的確切格式進行輸入和輸出。 希望能幫助到你 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM