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
我不明白为什么会这样,我也尝试过迭代器,同样的问题。
答案 0 :(得分:1)
那是因为你循环遍历循环中的列表,其中只有1个元素。当我&gt; 0显然会发生异常。
答案 1 :(得分:1)
你正在迭代tList
,你说它的大小为100,但是sList
只有大小1.所以只要你到达tList
的第二项,你就已经超过了sList
的大小。
请注意,您可以使用removeAll
从sList
中移除tList
中的所有内容。只需确保您的equals
和hashCode
方法正确无误。
答案 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
)。