多维ArrayList和Integer替换

时间:2012-02-01 02:00:05

标签: java arrays get arraylist

通过二维ArrayList<ArrayList<Integer>>以及每Int等于1的最佳(或无论如何,真的)是什么离开它,否则你从中减去1 ie if arrayList.get(i).get(j) == 3现在它将是2,依此类推,但如果它是1则保持1)仅在ARRAYLIST<ARRAYLIST<INTEGER>>的特定列中{1}}。

2 个答案:

答案 0 :(得分:4)

拿一把铲子 - 这只是一种方法。迭代所有行中的所有列:

// 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<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);
        }
    }
}

更新:

根据您的编辑,您应该添加要执行此转换的数组或列表列表。我在第二个片段中添加了一个示例。

答案 1 :(得分:1)

迭代所有值并使用条件语句对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;         
    } 
}