为什么会出错???arrylist

是风啊a 2009-11-19 10:59:56


for(int n=0;n<doctorWatchList.size();n++){
ZBJLBEO zb=(ZBJLBEO)doctorWatchList.get(n);
ZBJLBEO zb2=(ZBJLBEO)doctorWatchList.get(n+1);
if(zb.getCWYNAME().equals(zb2.getCWYNAME())&&zb.getHEALTH_REPORT().equals(zb2.getHEALTH_REPORT())){
doctorWatchList.remove(n);
}
}



在ACTION里执行两三遍就会出错。。。????请问怎么解决??
...全文
96 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
是风啊a 2009-11-19
  • 打赏
  • 举报
回复
嗯,是N+1的问题。。。。。。不好意思啊。。。到头了

是我算错了,呵

后来我改成:

for(int n=0;n<doctorWatchList.size();n++){
System.out.println("nnn:"+n+" size:"+doctorWatchList.size());
ZBJLBEO zb=(ZBJLBEO)doctorWatchList.get(n);
if(n==doctorWatchList.size()){break;}
ZBJLBEO zb2=(ZBJLBEO)doctorWatchList.get(n+1);
System.out.println("n:"+n+"size:"+doctorWatchList.size());
if(zb.getCWYNAME().equals(zb2.getCWYNAME())&&zb.getHEALTH_REPORT().equals(zb2.getHEALTH_REPORT())){
doctorWatchList.remove(n);
n--;
}
}

输出:
n:0 size:7
n:0 size:6
n:0 size:5
n:0 size:4
n:0 size:3
n:0 size:2
n:0 size:1

才明白怎么回事,呵呵,谢谢大家了,笨了。
cache0401 2009-11-19
  • 打赏
  • 举报
回复
就是越界的问题吧.
sinpinle 2009-11-19
  • 打赏
  • 举报
回复
怎么这样做呢,用遍历不好吗?
Iterator it = doctorWatchList.iterator();
for(Iterator it=doctorWatchList.iterator();it.next();)
zhaoyuzhong 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ssh_snow 的回复:]
也许你说的对,不过我
还没走到最后一个呢。。。。。
[/Quote]
报的什么错误信息
redlotus_lyn 2009-11-19
  • 打赏
  • 举报
回复
就是n+1的地方出错了。n+1超过doctorWatchList.size()的长度了。
zhaoyuzhong 2009-11-19
  • 打赏
  • 举报
回复
楼上有理 对arraylist循环 ZBJLBEO zb2=(ZBJLBEO)doctorWatchList.get(n+1);
到最后一条肯定会报错
阿_布 2009-11-19
  • 打赏
  • 举报
回复
当n=size()-1时,n+1=size()了,doctorWatchList中没有这个索引,越界了。
是风啊a 2009-11-19
  • 打赏
  • 举报
回复
也许你说的对,不过我
还没走到最后一个呢。。。。。
qustgjk 2009-11-19
  • 打赏
  • 举报
回复
是不是这句话有错误啊ZBJLBEO zb2=(ZBJLBEO)doctorWatchList.get(n+1);
当你走到最后一个得时候,你的(n+1)就超过了list的长度了

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧