【问题标题】:Time complexity regerding Iterator and for each-loop [duplicate]时间复杂度 regerding Iterator 和 for each-loop [重复]
【发布时间】:2016-05-06 15:41:40
【问题描述】:

我目前正在尝试找出最有效的方法,实现迭代器或 for each 循环。

将被遍历的对象是一个类'Graph',它由一个子类'Graph.Vertex'扩展。什么应该是最节省时间的,使用迭代器或 for each 循环遍历对象:

Graph.iterator();
while (Graph.iterator().hasNext()) {
    // Do something
}

对比

for (Graph.Vertex v : Graph {
    // Do something
}

【问题讨论】:

  • 同样,for-each 循环在底层使用迭代器。
  • 正如@azurefrog 提到的,两者应该有相似的运行时间。话虽这么说,直接使用迭代器可能允许您在迭代期间进行删除,而 for each 则不会。

标签: java


【解决方案1】:

这完全取决于您如何实现其中任何一个。

图的通常实现使用数组来存储顶点,迭代只需 O(V) 时间,其中 V 是图中的顶点数。

如果您的实现与此不同,那么您必须提供更多信息才能获得关于效率的准确答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 2011-08-17
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    相关资源
    最近更新 更多