Изменение определенных строк многомерного списка

Как пройти двумерный ArrayList>, и для определенных строк вы вычитаете одну (но не для всех, просто в основном перед этим стоит логическая проверка T/F, если логическая переменная T, то делайте это) Все, что я оставляю придумать то, что по существу заканчивается бесконечным для петель

Изменение должно быть сделано только для определенных строк списка... т.е.: (для целей, чтобы заставить это работать, elig.get(0) является ложным)

если у меня есть: [[1, 2, 3], [4, 5, 2], [2, 1, 1], [3, 6, 1], [1, 6, 3]] я бы хотел получить (например) в

1-я и последняя строки должны быть -1, поэтому: [[0, 1, 2], [4, 5, 2], [2, 1, 1], [3, 6, 1], [0, 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);     
}

2 ответа

Решение

Это как 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);
        }
    }
}

Это должно сделать трюк:

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);
    }
}
Другие вопросы по тегам