一个选择题,不明白,求指教

丶Kevin_ 2014-01-02 11:05:55
list是一个ArrayList的对象,哪个选项的代码填写到//todo delete处,可以在Iterator遍历的过程中正确并安全的删除一个list中保存的对象?( )

Iterator it = list.iterator();

int index = 0;

while (it.hasNext()){

Object obj = it.next();

if (needDelete(obj)) { //needDelete返回boolean,决定是否要删除

//todo delete

}

index ++;

}

A)list.remove(obj);

B)list.remove(index);

C)list.remove(it.next());

D)it.remove();


选择什么?为什么?
...全文
196 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghostkngiht 2014-01-02
  • 打赏
  • 举报
回复
选D,其他的抛 java.util.ConcurrentModificationException异常。 可以看看api的解释: 例如:某个线程在 Collection 上进行迭代时,通常不允许另一个线性修改该 Collection。通常在这些情况下,迭代的结果是不确定的。如果检测到这种行为,一些迭代器实现(包括 JRE 提供的所有通用 collection 实现)可能选择抛出此异常。执行该操作的迭代器称为快速失败 迭代器,因为迭代器很快就完全失败,而不会冒着在将来某个时间任意发生不确定行为的风险。
coolbamboo2008 2014-01-02
  • 打赏
  • 举报
回复
it.remove(); 在循环中的时候,list千万不要删除自身的对象,要用it删

50,545

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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