gpt4 book ai didi

java - 使用迭代器有什么好处?

转载 作者:行者123 更新时间:2023-12-02 14:45:23 25 4
gpt4 key购买 nike

for(Element e : elementList)

for (Iterator<Element> itr = elementList.iterator(); itr.hasNext();)

第一个要简单得多。我想做第二个有什么优势或理由吗?

最佳答案

两者内部都使用迭代器,唯一的区别是使用增强的 for 循环时代码更清晰、更短。以下是 javadoc 对两者的描述:

迭代集合比它需要的更丑陋。考虑以下方法,该方法获取计时器任务的集合并取消它们:

void cancelAll(Collection<TimerTask> c) {
for (Iterator<TimerTask> i = c.iterator(); i.hasNext(); )
i.next().cancel();
}

迭代器只是困惑。此外,这也是犯错误的机会。迭代器变量在每个循环中出现三次:这是出错的两次机会。 for-each 结构消除了困惑和出错的机会。以下是使用 for-each 构造的示例的外观:

void cancelAll(Collection<TimerTask> c) {
for (TimerTask t : c)
t.cancel();
}

当您看到冒号 (:) 时,请将其读作“in”。上面的循环读作“对于 c 中的每个 TimerTask t”。正如您所看到的,for-each 结构与泛型完美地结合在一起。它保留了所有的类型安全性,同时消除了剩余的困惑。因为您不必声明迭代器,所以不必为它提供通用声明。 (编译器在背后为您完成此操作,但您无需关心它。)

有关为什么我们应该使用 for-each 循环而不是迭代器的完整说明,请阅读以下内容:

http://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html

关于java - 使用迭代器有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16952313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com