2017-08-01 125 views
0

我试图把integer列表中的整数列表中的整数列表。 我试过了。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, [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)读取包含:

回答

2

只要改变innerlist.clear()innerlist = new ArrayList<>();

当您将内部列表添加到外部列表时,它将按内存地址添加,因此,当您更改内部列表时,它会在所有位置更改。但是当你做innerlist = new ArrayList<>();你创建了新的列表,并且内存加法器被改变了,但它的数据没有改变