我们是否需要在ArrayList上使用迭代器?


问题内容

昨天,当我回答使用迭代器并删除时出现ConcurrentModificationException错误的问题时,我添加了一条通知

当您有ArrayLists时,使用迭代器不是一个好主意。

您无需深刻理解该问题即可回答该问题。

在那里,我有两条评论是我错了。

我的论点:

  1. 迭代器不易读取代码。

  2. 有可能引发难以调试的ConcurrentModificationException。

你能解释一下吗?

问题:我们是否需要在ArrayList上使用迭代器?

UPD

这是关于显式使用Iterator的。


问题答案:

带有ArrayLists的迭代器的一个大用例是当您要在迭代时删除元素时。您只有三种安全的解决方案:

  • 使用迭代器及其remove方法
  • 复制要保留在另一个列表中的元素
  • 带有索引的丛林

假设您不在add进行迭代,则使用迭代器 可以避免 使用ConcurrentModificationException

可读性参数是主观的。我个人没有发现明确声明的迭代器不那么可读。这并不重要,因为迭代器是同时迭代和删除的安全方法。