Java循环遍历列表问题

时间:2011-08-25 14:15:23

标签: java

    if (sList.size() > 0) {
        for (int i = 0; i < tList.size(); i++) {
            String a = sList.get(i).getString();
            String b = tList.get(i).getString();
            if (a.equals(b)) {
                tList.remove(i);
            }
        }
    }

sList.Size为1,tList.size为100。

然而,我一直收到这个错误:
    例外:java.lang.IndexOutOfBoundsException:Index:1,Size:1

我不明白为什么会这样,我也尝试过迭代器,同样的问题。

7 个答案:

答案 0 :(得分:1)

那是因为你循环遍历循环中的列表,其中只有1个元素。当我&gt; 0显然会发生异常。

答案 1 :(得分:1)

你正在迭代tList,你说它的大小为100,但是sList只有大小1.所以只要你到达tList的第二项,你就已经超过了sList的大小。

请注意,您可以使用removeAllsList中移除tList中的所有内容。只需确保您的equalshashCode方法正确无误。

答案 2 :(得分:0)

如果sList包含的项目少于tList,则会发生这种情况。你需要一个单独的循环计数器来迭代sList的元素,而不是试图为两者使用单个计数器。

答案 3 :(得分:0)

您正在迭代0到100(tList的大小)。您说sList的大小为1,但您尝试访问sList[i]。所以你正在读书。

答案 4 :(得分:0)

你实际上并没有遍历sList,你只是通过tList(第2行)并假设sList具有相同数量的元素(第3行)不会......一旦你完成第一个元素(0),它就会失败。

答案 5 :(得分:0)

索引的Java列表(与所有其他集合一样)从0开始编制索引。长度为1的列表在位置0只有一个成员。

如果您尝试访问不存在的成员(您在此处执行此操作),那么您将获得此异常。

答案 6 :(得分:0)

如果sList.size()1,那么您只能获得索引0而不是1的项目,因此您获得

的原因
  

java.lang.IndexOutOfBoundsException:Index:1,Size:1

所以,当i == 1时,你已经开始读书了(请记住,java从0计算而不是1)。