我们是否需要在ArrayList上使用迭代器?
问题内容:
昨天,当我回答使用迭代器并删除时出现ConcurrentModificationException错误的问题时,我添加了一条通知
当您有ArrayLists时,使用迭代器不是一个好主意。
您无需深刻理解该问题即可回答该问题。
在那里,我有两条评论是我错了。
我的论点:
-
迭代器不易读取代码。
-
有可能引发难以调试的ConcurrentModificationException。
你能解释一下吗?
问题:我们是否需要在ArrayList上使用迭代器?
UPD
这是关于显式使用Iterator的。
问题答案:
带有ArrayLists的迭代器的一个大用例是当您要在迭代时删除元素时。您只有三种安全的解决方案:
- 使用迭代器及其
remove
方法 - 复制要保留在另一个列表中的元素
- 带有索引的丛林
假设您不在add
进行迭代,则使用迭代器 可以避免 使用ConcurrentModificationException
。
可读性参数是主观的。我个人没有发现明确声明的迭代器不那么可读。这并不重要,因为迭代器是同时迭代和删除的安全方法。