Многомерная замена ArrayList и Integer - PullRequest
0 голосов
/ 01 февраля 2012

Что является лучшим (или в любом случае, действительно) прохождения двумерного ArrayList<ArrayList<Integer>>, и для каждого Int, равного 1, вы оставляете его, в противном случае вы вычитаете 1 от этого. т.е. if arrayList.get(i).get(j) == 3 теперь будет 2 и т. Д., Но если оно 1, оно остается 1) Только в определенных столбцах ARRAYLIST<ARRAYLIST<INTEGER>>.

Ответы [ 2 ]

4 голосов
/ 01 февраля 2012

Получить лопату - есть только один способ сделать это.Переберите все столбцы во всех строках:

// example declaration only - initially all zeros until you set them.
// assumes nrows and ncols are initialized and declared elsewhere
int [][] matrix = new int[nrows][ncols];
for (int i = 0; i < matrix.length; ++i) {
    for (int j = 0; j < matrix[i].length; ++j) {
        // operate on the values here.
        if (matrix[i][j] != 1) {
            matrix[i][j] -= 1;
        }
    }
}

Если у вас есть список List, он выглядит следующим образом:

List<List<Integer>> matrix = new ArrayList<List<Integer>>();
List<Integer> columnIdsToTransform = Arrays.asList({0, 4, 6 });
// You have to initialize the references; all are null right now.
for (List<Integer> row : matrix) {
    for (int j = 0; j < row.size(); ++j) {            
        // operate on the values here.
        value = row.get(j);
        if (columnsIdsToTransform.contains(j) && (value != 1)) {
            row.set(value-1, j);
        }
    }
}

UPDATE:

Основываясь на ваших изменениях, вы должны добавить массив или список столбцов, для которых вы хотите выполнить это преобразование.Я добавил пример ко второму фрагменту.

1 голос
/ 01 февраля 2012

Выполните итерацию по всем значениям и используйте свой условный оператор для выполнения операции в true случаях.

for (int i=0;i<Arraylist.size();i++) {
    for (int j=0;j<Arraylist[i].size();j++) {    
         if (arrayList.get(i).get(j) != 1) 
             arrayList.get(i).get(j) -= 1;         
    } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...