2D arraylist元素替换为条件

时间:2015-05-13 09:42:20

标签: android arraylist

我有一个2D arraylist,名为adjLists,包含arraylists,包含这些值。每两个值都是"对"每三分之一都是一个标志"为了这对。

[278, 106, 0, 397, 36, 0, 59, 208, 0, 366, 221, 0]
[366, 221, 0, 397, 36, 0, 132, 390, 0, 278, 106, 0, 295, 0, 0]

我使用上面的代码在这些列表中搜索指定的值对。 vertexnum是" sub arraylists"在adjlists。

for (int l = 0; l < vertexnum; l++) {
    if (adjLists.get(l).get(0) == p.x && adjLists.get(l).get(1) == p.y) {
        for (int h = 0; h < adjLists.get(l).size(); h += 3) {
            for (int g = 0; g < vertexnum; g++) {
                if ((vertexSprite[g].getX() + vertexSprite[g].getWidth() / 2) == adjLists.get(l).get(h)
                    && (vertexSprite[g].getY() + vertexSprite[g].getHeight() / 2) == adjLists.get(l).get(h + 1)) {
                    vertexSprite[g].setTexture(img_d);

                    ArrayList sublist = new ArrayList();
                    sublist.add(0, adjLists.get(l).get(h));
                    sublist.add(1, adjLists.get(l).get(h + 1));

                    for (int lj = 0; lj < vertexnum; lj++) {
                        if (Collections.indexOfSubList(adjLists.get(lj), sublist) != -1) {
                            int found = Collections.indexOfSubList(adjLists.get(lj), sublist);
                            adjLists.get(lj).set(found + 2, 1);
                            score++;
                        }
                    }
                    scoreupdate();
                }
            }
        }
        break;
    }
}

此代码用于搜索确切的值并在每次出现时替换它们的标志。它无法找到列表中值/对的所有出现,它只替换标记值几次。在每次发现之后,得分的值应该加1加1,但是这个代码比匹配数增加得更多。 例如,一个数组就像这样[pair1,pair1,flag1,pair2,pair2,flag2],并且如果pair1等于搜索,则想要将flag1更改为1.

1 个答案:

答案 0 :(得分:0)

为什么不使用这样的东西:

for (i=0;i<'vertexnum';i++){
    for (j=0;j<'Elements in list'-3;j=j+3){
        if(array[i][j]=='Condition 1' && array[i][j+1]=='Condition 2')
            array[i][j+2]='New Flag'  
        if ... 'You can have many if clauses here'                                     
    }                              
}