List<Studentdb> list = teacherDao.viewstudent(facultyid, batchid1);
System.out.println("" + list);
int i = 0;
for (Iterator<Studentdb> s = list.iterator(); s.hasNext(); ) {
System.out.println("" + i);
System.out.println("list========" + list.get(i).getRoll());
if (teacherDao.viewmarks(subjectcode, list.get(i).getRoll())) {
list.remove(s);
}
i++;
}
当我尝试删除所选列表时,我收到错误java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
。
这里我有列表大小3
,即索引0 1 2
,我在索引3
中收到了错误。
答案 0 :(得分:0)
从for循环中的列表中删除项目总是一团糟。
最好将所需的项目放在另一个列表中,或者如果使用Java 8使用流并过滤列表。
答案 1 :(得分:0)
你的代码有一个无限循环,因为它没有得到迭代器中的下一个项目。
因此,当i
等于3
时,您的代码正试图获取列表中的第4个元素,这就是您的原因所在得到这个例外。
您应该在next()
对象中调用s
方法。
答案 2 :(得分:0)
在到达大小为1的位置后,只需包含一个条件,使其中断。 我希望你很清楚,如果列表的大小为n,列表将从0转换为n-1。 在您的错误消息中,它实际上说的是,您正在尝试迭代到列表中已分配区域之外的项目。