[英]Java: how can I split an ArrayList in multiple small ArrayLists?
[英]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.