java - 在将元素添加到集合之前声明迭代器

标签 java iterator fail-fast

如果您创建自己的Iterable容器类并在其元素上检索java.util.Iterator,是否有任何编码模式可以根据该模式进一步添加元素容器中的内容应该不能可以从迭代器访问吗?我在想“不可能,绝对不是,事实上 Iterator 应该能够循环遍历所有元素,无论添加什么。”

或者如果在进行新添加后调用 next() ,快速失败的 Iterator 是否应该抛出异常?

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

最佳答案

Is it perhaps the case that a fail-fast Iterator should throw an Exception if next() is called after a new addition is made?

正确。我相信如果您尝试使用任何 Java 内置的 Iterable 来做到这一点您将得到 ConcurrentModificationException

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

关于java - 在将元素添加到集合之前声明迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43002688/

相关文章:

java - json包与jdk 1.4不兼容

typescript Symbol.iterator

r - 在请求缺少的列表元素时,我可以覆盖 `$` 或 `[[` 以抛出错误而不是 NULL 吗?

尝试弹出消息框时 Java Frame 消失?

java - 如何将 byte[4] 转换为 int (Android)

java - Scala HashMap 抛出键未找到异常

java - 为什么我在迭代期间从 ArrayList 中删除元素时没有得到 ConcurrentModificationException

java - EAR 中有效的项目结构

C++ BOOST ForEach 与自定义宏