2012-02-01 79 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