1

如果您创建自己的Iterable容器类并java.util.Iterator在其元素上检索 a ,是否存在任何编码模式,根据该编码模式,容器中的任何进一步添加元素都不应从Iterator? 我在想“不可能,绝对不是,事实上Iterator应该能够遍历所有元素,而不管添加如何。”

或者,如果在添加新内容后调用fail-fastIterator是否应该抛出异常?next()

自从我用 Java 编码以来已经有一段时间了,但这里有些东西很臭。

4

2 回答 2

2

next()如果在添加新内容后调用快速失败的迭代器,是否可能会抛出异常?

正确的。我相信如果您尝试使用 Java 的任何内置Iterables 来执行此操作,您将获得ConcurrentModificationException

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

于 2017-03-24T15:05:29.333 回答
0

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

于 2017-03-24T15:05:17.760 回答