我有一个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.
答案 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'
}
}