循环遍历List并根据数据创建视图

时间:2015-01-21 10:02:25

标签: java list

我目前有两个列表:

List<String> listUserAnswers = splitWords(answer);
List<String> listRealAnswers = splitWords(realAnswer);

我的主要目标是遍历这些并根据数据创建不同的视图。例如,对于每个correctAnswer,我将创建一种视图,而对于wrongAnswer,则创建另一种视图。

然后我遍历两个列表:

for (String userAnswer : listUserAnswers) {
        for (String realAnswer : listRealAnswers) {
            if (userAnswer.equals(realAnswer)) {
                correctLayout = createCorrectView(userAnswer);
                newCorrectViews.add(correctLayout);
            } else {
                incorrectLayout = createIncorrectView(userAnswer);
                newIncorrectViews.add(incorrectLayout);
            }
        }
    }

然后我检查userAnswer是否与realAnswer匹配,然后创建视图。

然而,我遇到的问题是,如果realAnswer是:

[This, Is, The, Real, Answer]

并且用户输入:

[This, Is, Real]

然后前两个单词应该在屏幕上显示为正确,并且单词&#39; Real&#39;不正确。

然而,实际发生的是:

[This, Is, This, This, Is, Is, Real, Real] - &gt;其中[This, Is]是正确的,其余的被标记为不正确。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你不应该有内循环。你只需要一个循环,所以不要使用增强的。

您可以使用以下内容:

minSize = listUserAnswers.size() > listRealAnswers.size() ? listUserAnswers.size() : listRealAnswers.size();
for(int i = 0; i < minSize; i++)
  String userAnswer = listUserAnswers.get(i);
  String realAnswer = listRealAnswers.get(i);
  if(userAnswer.equals(realAnswer))
     ....

只检查同一位置的实际单词。