在java的所有情况下iterator.remove()是否都是健全的?

时间:2009-10-03 15:43:31

标签: java iteration

与C ++一样,iterator.remove()不是100%安全或健壮的 java使用iterator.remove()保证100%的健壮性吗?

2 个答案:

答案 0 :(得分:3)

取消亚特的评论(谁真的值得信任)

http://java.sun.com/javase/6/docs/api/java/util/Iterator.html#remove%28%29

表示:

  

void删除()

     

从底层集合中移除迭代器返回的最后一个元素(可选操作)。每次调用next时,只能调用一次此方法。一个人的行为   如果在迭代正在进行中以除调用此方法之外的任何方式修改基础集合,则不指定迭代器。

所以......是的,有条件可能会发生意外/不安全行为。

答案 1 :(得分:2)

是的,它很强大,因为它是在界面上定义的,因此必须在任何实现它的集合上工作。但是,有几个警告来自the Javadoc

  • 这是一个可选操作 - 并非所有提供迭代器的东西都需要实现remove()
  • 每次调用next()
  • 时,只能调用一次
  • 如果在枚举 other 期间修改了基础集合,则调用remove()
  • 是不可靠的