【发布时间】:2014-04-11 15:39:55
【问题描述】:
我在一次采访中被问到使用迭代器比for 循环有什么优势,或者使用for 循环比迭代器有什么优势?
任何人都可以回答这个问题吗?
【问题讨论】:
-
for-each 循环在底层使用了一个迭代器。区别只是可读性(因此是可维护性)。
-
好吧;你为什么说
Iterator? -
没有什么能强迫你立即回答。您可以推理不同类型的集合、每个代码在幕后的作用,并展示您的推理能力,即使您无法制定明确的答案。这就是重要的:能够思考。我会这样开始我的回答:“嗯,我不知道。我想这取决于你想做什么,以及收集的类型是什么。必须有充分的理由同时使用两者,但它必须取决于这种情况。让我们想象一下 ArrayList 会发生什么。然后是 LinkedList 等等等等。”
-
我完全同意@JBNizet。说我不知道它比选择一个随机选项好多少——这给我的印象是你会在编程时这样做;不假思索地选择想到的第一件事。您可以尝试解释您在该领域的知识,而不是说您的知识不足以给出明智的答案。
-
当前的两个答案都不完整。首先,有 2 种 for 循环,它们的行为非常不同。一种使用索引(这并不总是可能的),另一种在幕后使用迭代器。所以你实际上有 3 个循环来比较。然后你可以用不同的术语来比较它们:性能、可读性、易错性、能力。 Iterator 可以做一些 foreach 循环不能做的事情。但是迭代器更危险,可读性更差。并且使用索引访问元素仅适用于列表,但如果它是链表则效率不高。所以没有“最好”的方式。