选择题
9. list是一个ArrayList的对象,当将选项______的代码填到//todo delete处时,可以在Iterator遍历的过程中正确并安全地删除一个list中保存的对象。
Iterator it=list.iterator();
imindex=0;
while(it.hasNext())
{
Object obj=it.next();
if(needDelete(obj))//needDelete返回boolean,决定是否要删除
{
//todo delete
}
index++;
}
【正确答案】
A
【答案解析】 Iterator支持从源集合中安全地删除对象,删除的方法为在Iterator上调用remove()方法。这样做的好处是可以避免ConcurrentModifiedException异常发生,当打开Iterator迭代集合时,同时又在对集合进行修改。有些集合不允许在迭代时删除或添加元素,但是调用Iterator的remove()方法是个安全的做法。
remove()方法的作用为从迭代器指向的集合中移除迭代器返回的最后一个元素(可选操作),每次调用next()方法只能调用一次此方法。如果在进行迭代时,用调用此方法之外其他方式修改了该迭代器所指向的集合,那么迭代器的行为是不明确的。因此,选项A正确。