java怎样删除一个对象_java – Iterator的remove方法如何实际删除一个对象

我们都知道,在迭代它时从集合中删除对象的最安全的“可能只是安全”的方式是首先检索Iterator,执行循环并在需要时删除;

Iterator iter=Collection.iterator();

while(iter.hasNext()){

Object o=iter.next()

if(o.equals(what i'm looking for)){

iter.remove();

}

}

我想要理解的是,不幸的是没有发现一个深刻的技术性的解释,是这种删除是如何执行的,

如果:

for(Object o:myCollection().getObjects()){

if(o.equals(what i'm looking for)){

myCollection.remove(o);

}

}

会引发ConcurrentModificationException,“在技术术语”Iterator.remove()会做什么?它是否删除对象,打破循环并重新启动循环?

我在官方文件中看到:

“Removes the current element. Throws IllegalStateException if an

attempt is made to call remove() that is not preceded by a call to

next( ).”

部分“删除当前元素”,使我想到在“常规”循环中发生的完全相同的情况=> (执行等式测试并删除,如果需要),但为什么迭代器循环ConcurrentModification安全?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值