求高手指点 java中迭代器iterator和for each 的不同之处,老师以前讲过我忘了,我知道for each 也是用迭代器实现的 好像 不同之处在iterator的方法remove()上
最新回答
予情
2022-06-11 08:50:54
for each语句是由iterator实现的,正如你所说,他们的不同之处就在于remove()方法上。 一般调用删除方法都是集合的方法,例如: List list = new ArrayList(); list.add(...); list.remove(...); 但是,如果在循环的过程中调用集合的remove()方法,就会导致循环出错,例如: for(int i=0;i<list.size();i++){ list.remove(...); } 循环过程中list.size()的大小变化了,就导致了错误。 所以,如果你想在循环语句中删除集合中的某个元素,就要用迭代器iterator的remove()方法,因为它的remove()方法不仅会删除元素,还会维护一个标志,用来记录目前是不是可删除状态,例如,你不能连续两次调用它的remove()方法,调用之前至少有一次next()方法的调用。 如果你想了解的更透彻,可以查看一下原码,看它是怎么实现的。