Получить лопату - есть только один способ сделать это.Переберите все столбцы во всех строках:
// 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:
Основываясь на ваших изменениях, вы должны добавить массив или список столбцов, для которых вы хотите выполнить это преобразование.Я добавил пример ко второму фрагменту.