我试图将一个整数的arraylist放在整数的arraylist的arraylist中。 我试过了。
public class test3{
public static void main(String[] args) throws IOException{
String text= null;
ArrayList<ArrayList<Integer>> outerlist = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> innerlist = new ArrayList<>();
int dept= 17;
int arrv= 6;
int[] arr = new int[1000];
String[] stations = null;
FileReader file = new FileReader("test2.txt");
BufferedReader br = new BufferedReader(file);
while((text = br.readLine()) != null){
innerlist.clear();
stations = text.split(" ");
//int[] array = Arrays.stream(stations).mapToInt(Integer::parseInt).toArray();
for(int i = 0 ; i<stations.length ; i++){
arr[i] = Integer.parseInt(stations[i]);
}
for(int j = 0 ; j<stations.length ; j++){
innerlist.add(arr[j]);
}
outerlist.add(innerlist);
}
System.out.println(outerlist);
}
}
它应该输出 [[1,17,3,150,22],[2,6,34,118],[5,22,3,19,6,118,250,7],[10,15,89,14, 33,77,2,101,50,44]]
但输出: [[10,15,89,14,33,77,2,101,50,44],[10,15,89,14,33,77,2,101,50,44],[10,15, 89,14,33,77,2,101,50,44],[10,15,89,14,33,77,2,101,50,44]]
我正在读取的测试文件(test2.txt)包含:
1 17 3 150 22
2 6 34 118
5 22 3 19 6 118 250 7
10 15 89 14 33 77 2 101 50 44
答案 0 :(得分:2)
只需将innerlist.clear()
更改为innerlist = new ArrayList<>();
。
当您将内部列表添加到外部列表时,它会按内存地址添加,因此,当您更改内部列表时,它会在所有位置发生更改。但是当你innerlist = new ArrayList<>();
创建新列表时,内存加法器已更改,但数据未更改