当前位置: 首页 > 面试题库 >

java for循环和for-each循环之间是否存在性能差异?

邓光耀
2023-03-14
问题内容

以下两个循环之间的性能差异(如果有)是什么?

for (Object o: objectArrayList) {
    o.DoSomething();
}

for (int i=0; i<objectArrayList.size(); i++) {
    objectArrayList.get(i).DoSomething();
}

问题答案:

版本1.5中引入的for-each循环通过完全隐藏迭代器或index变量,消除了混乱和出错的机会。结果成语同样适用于集合和数组:

// The preferred idiom for iterating over collections and arrays
for (Element e : elements) {
    doSomething(e);
}

当你看到冒号(:)时,将其读为“ in”。因此,上面的循环读为“对于元素中的每个元素e”。请注意,即使对于数组,使用for-each循环也不会降低性能。实际上,在某些情况下,它可能只比普通的for循环提供一点性能优势,因为它只计算一次数组索引的限制。尽管你可以手动执行此操作(第45项),但程序员并非总是如此。



 类似资料:
  • For Each循环用于为数组或集合中的每个元素执行语句或一组语句。 For Each循环类似于For循环; 但是,为数组或组中的每个元素执行循环。 因此,步进计数器将不存在于这种类型的循环中。 它主要用于数组或在File系统对象的上下文中使用,以便递归操作。 语法 (Syntax) 以下是VBA中For Each循环的语法。 For Each element In Group [state

  • 问题内容: 通过一些旧的公司代码,我遇到了一个如下所示的for循环: 我尝试了Google,但找不到任何答案。我是在编程课上睡着了还是这是一个不寻常的循环? 问题答案: 一个for在Java循环结构如下- for (initialization statement; condition check; update) loop body; 如你所见,这里有四个语句- 初始化语句:第一次进入循环时,该

  • 在循环中,我们不断终止条件,并在每一次传递中检查这些条件。 我见过2种检查方法 1.或

  • 我使用的是mongoDB PHP,当我使用find查询或聚合框架时,结果是一个游标,我可以使用foreach循环或while循环对游标进行迭代。例如,我要执行以下查询 我可以使用以下两种方法迭代结果

  • 我在写一段代码,其中有一个字符串[]和一个方法,该方法接受这个字符串[]并返回字节[],保持字符串-字节对的位置,其中很少有字节可以为空。最后,我必须对字节进行转换,并从string[]中获取一个键为string,值为转换返回值的映射。这就是我在Java 8流中实现相同功能的方式: 其中productReference是字符串[],ProductSpice[]是字节[]数组。 现在的问题是IntS

  • 在上面的代码中,我根据天气与否计算每个指数,每个指数都是=到零。然而,它总是在foreach循环中运行false,在for循环中运行true。有人能解释一下幕后发生了什么让这一切发生吗? 我不是按顺序运行它们,它们都是为了演示目的。