在向元素添加元素之前声明迭代器

时间:2017-03-24 14:55:07

标签: java iterator fail-fast

如果您创建自己的Iterable容器类并在其元素上检索java.util.Iterator,是否有任何编码模式,根据该编码模式,容器中任何进一步添加的元素应该可以从Iterator访问?我在思考"没办法,绝对没有,事实上Iterator应该能够循环遍历所有元素而不管添加内容。"

或者,如果在新添加后调用Iterator,则失败的next()应该抛出异常?

自从我用Java编写代码之后已经有一段时间了,但这里有些东西很糟糕。

2 个答案:

答案 0 :(得分:2)

  

可能是故障快速迭代器应该抛出的情况   如果在新添加后调用next(),则会出现异常吗?

正确。我相信如果您尝试使用Java内置Iterable中的任何一个,那么您将获得ConcurrentModificationException

整个Javadoc for that exception值得一读。它非常简洁。而不是引用整个事情,重点是迭代器在未来的未确定时间内不会快速失败" [风险]任意,非确定性行为。"

答案 1 :(得分:0)

用户Michael在上面的评论中回答了我的问题。快速失败的迭代器应该完全遵循后者。现在,当我们更喜欢快速失败而不是故障安全时,我不确定,但鉴于容器根据定义是可变的,我相信Fail-Fast可能是唯一的出路。