基本上,我试图对照另一个数字数组列表检查数字的数组列表,因为我想查看我的“访问过的单词”列表中的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循环更容易阅读,它使您不必担心列表的大小。

10-08 08:17