基本上,我试图对照另一个数字数组列表检查数字的数组列表,因为我想查看我的“访问过的单词”列表中的TempPositionList中是否有任何内容,但是因为“ Visisted”单词列表可能小于或大于临时列表,我得到堆栈溢出异常。
我如何解决这个问题?
private void Checker(AdapterView<?> arg0, List<Integer> TempPositionList, boolean checked) {
if (checked) {
// its a word
for (int i = 0; i < TempPositionList.size(); i++) {
VisitedWords.add(TempPositionList.get(i));
}
} else {
boolean check = false;
for (int i = 0; i < TempPositionList.size(); i++) {
for (int j = 0; j < TempPositionList.size(); j++) {
if (VisitedWords.size() > 0) {
if (TempPositionList.get(i).equals(VisitedWords.get(j))) {
check = true;
break;
}
}
}
if (!check) {
arg0.getChildAt(TempPositionList.get(i)).setBackgroundColor(Color.BLACK);
}
}
}
}
最佳答案
我认为这应该可以实现您想要实现的目标:
for (Integer tempInt : TempPositionList) {
if (!VisitedWords.contains(tempInt)) {
arg0.getChildAt(tempInt).setBackgroundColor(Color.BLACK);
}
}
contains()
方法省去了遍历第二个列表的麻烦,在我看来,使用foreach
循环更容易阅读,它使您不必担心列表的大小。