2012-02-01 80 views
2

什麼是通過二維ArrayList>的方法,以及您減去一個特定行的方法(但不是所有,基本上在此之前有一個布爾T/F檢查,如果布爾值是T然後做到這一點)所有我一直想出的是什麼基本上最終成爲無限的循環更改多維列表的特定行

只能對列表的特定行進行更改......即:(爲了達到此目的(0)爲假)

如果我有: [[1,2,3],[4,5,2],[2,1,1],[3,6 ,1],[1,6,3]]我想得到(例如)在

第一行和最後一行應爲-1如此: [[0,1,2],[4,5,2],[2,1,1],[3,6,1],[0,1,2] 5,2]

等等

代碼我現在是:(我孤立它,真的不知道爲什麼不起作用?

for(int j=0; j<(bigArr.size()); j++) { 

      for(int k=0; k<(bigArr.get(0).size()); k++) { 

       if(elig.get(0) == false) { 

       bigArr.get(j).set(k, ballotArr.get(j).get(k)-1); 



      } 

     } 
System.out.println(ballotArr);  
} 
+0

是數組的數組列表嗎?或陣列列表的arraylist? – gprathour 2012-02-01 04:16:10

+0

arraylist of arraylists – 2012-02-01 06:18:24

+0

你的代碼到現在爲止給你什麼問題? – gprathour 2012-02-01 06:20:52

回答

0

它就像有ArrayList中的ArrayList。因此,不是像arr [row] [column]那樣引用正常數組中的特定元素,而是使用arr.get(row).get(column)

//loops through first dimension 
for(int row=0;row<myList.size();row++) { 
    //check that T/F you mentioned 
    if(myBoolean) { 
     //loop through second dimension 
     for(int i=0;i<myList.get(row).size();i++) { 
      //subtract 1 from everything in second dimension 
      myList.get(row).set(i, myList.get(row).get(i)-1); 
     } 
    } 
} 
+0

這給了我同樣的問題(使用我的原始示例),arraylist的新arraylist只是[[0,1,2],[0,1,2],[0,1,2], [0,1,2],[0,1,2]] – 2012-02-01 07:03:27

+0

GOT IT THANKS!只是我的一個小錯誤,我猜測 – 2012-02-01 07:39:43

0

這應該做的伎倆:

List<List<Integer>> nums = ...; 

if (nums.size() >= 2) { 
    subtractOneFromRow(nums, 0); 
    subtractOneFromRow(nums, nums.size() - 1); 
} else if (nums.size() == 1) { 
    subtractOneFromRow(nums, 0); 
} 
// Do nothing if there are no rows 

// ... 

private static void subtractOneFromRow(List<List<Integer>> nums, int r) { 
    List<Integer> row = nums.get(r); 
    for (int c = 0; c < row.size(); c++) { 
     row.set(c, row.get(c) - 1); 
    } 
} 
+0

對不起,我對此很新...所以nums =我的大二維數組列表和r =只是爲了這個? (nums.size()> = 2,然後仍然從行中減去我編輯的代碼,但它從第一個'false'減1,並替換整個bigArr與 – 2012-02-01 04:37:44