在Java中的foreach循环中调用remove

在Java中的foreach循环中调用remove,第1张

在Java中的foreach循环中调用remove

为了在迭代集合时安全地从集合中删除,你应该使用迭代器。

例如:

List<String> names = ....Iterator<String> i = names.iterator();while (i.hasNext()) {   String s = i.next(); // must be called before you can call i.remove()   // Do something   i.remove();}

从Java文档:

此类的迭代器和

listIterator
方法返回的迭代器是快速失败的:如果在创建迭代器之后的任何时间以任何方式对列表进行结构修改,则除了通过迭代器自己的remove或add方法之外,迭代器都会抛出
ConcurrentModificationException
。因此,面对并发修改,迭代器会快速干净地失败,而不会在未来的不确定时间内冒任意,不确定的行为的风险。

对于许多新手来说,也许不清楚的是,使用for / foreach构造对列表进行迭代会隐式创建一个迭代器,该迭代器必然无法访问。该信息可以在这里找到



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/4947976.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-13
下一篇2022-11-13

发表评论

登录后才能评论

评论列表(0条)

    保存