2014-02-06 76 views
1

我想從2d數組創建一個2d ArrayList。其實我已經得到了一個臨時ArrayListand我解析它到我的2d ArrayList for循環。我試圖找到正確的方法來清除這個臨時ArrayList,以便每次都傳遞正確的值給mags ArrayList。正確清理java arraylist

for (int m = 0; m < M; m++) { 
     for (int n = 0; n < N; n++) { 
      for (int i = 0; i < gaborWavelet.length; i++) { 
       temp.clear(); 
       for (int j = 0; j < gaborWavelet[0].length; j++) { 
        sum = gaborWavelet[i][j][m][n][0]/(M * N); 
        temp.add((int) (sum * 170));     
       } 
       mags.add(temp);    
      } 
     } 
    } 

在上面的代碼中只有最終索引-i它在temp m * n * i次中傳遞。

編輯:

 for (int m = 0; m < M; m++) { 
     for (int n = 0; n < N; n++) { 
      for (int i = 0; i < gaborWavelet.length; i++) { 
       ArrayList<Integer> temp = new ArrayList<Integer>(); 
       for (int j = 0; j < gaborWavelet[0].length; j++) { 
        sum = gaborWavelet[i][j][m][n][0]/(M * N); 
        temp.add((int) (sum * 170));     
       } 
       mags.add(temp);    
      } 
     } 
    } 

    System.out.println(mags.get(200)); 
    System.out.println(mags.get(0)); 

如果上面是你的意思,我在這裏得到了同樣的問題。

+2

2D ArrayList中創建ArrayList是一個代碼味道恕我直言 – Bohemian

+1

的'的for(int我..)'循環裏創建'temp' ArrayList的實例。在不同的說明中,4個嵌套循環!? – Rakesh

+0

ArrayList.clear()。如果這不能回答你的問題,你的問題是什麼? – EJP

回答

2

而不是temp.clear()temp = new ArrayList()。使用mags中的代碼將與ArrayList添加多次。

而且閱讀this post如何從陣列