gpt4 book ai didi

java - 增强for循环空检查优化

转载 作者:搜寻专家 更新时间:2023-11-01 01:42:47 24 4
gpt4 key购买 nike

我知道使用 Java 的人不应该为这样的事情烦恼,但我无法抗拒,哪个更快?:

ArrayList <Integer> keke = new ArrayList();
ArrayList <Integer> kuku = new ArrayList();
if(!keke.isEmpty()){
for(Integer num : keke){
System.out.println(num);
}
}

//or just:

for(Integer num : kuku){
System.out.println(num);
}

增强的 for 循环在它开始做任何事情之前做一个空检查,对吗?那么使用封闭的 if(empty) 是完全没用的吗?

最佳答案

The enhanced for loop does an empty check before it starts to do anything right?

不,我没想到会这样。我希望它只是创建迭代器,然后找不到任何东西。这就是JLS 14.14.2无论如何描述:

The enhanced for statement is equivalent to a basic for statement of the form:

for (I #i = Expression.iterator(); #i.hasNext(); ) {
{VariableModifier} TargetType Identifier =
(TargetType) #i.next();
Statement
}

循环体永远不会被执行。是的,它可能会创建一个无关对象(迭代器),但在 99.99% 的情况下,我预计这不会对性能造成重大影响。(如前所述,iterator() 方法可能会返回一个单例空迭代器以避免这种情况...)

如果您有证据表明在您的特定应用程序中,当集合为空时它会非常非常频繁地受到攻击,并且所有额外的迭代器都会导致问题,那么 微优化是公平的。但在现实环境中获得具体的性能数据之前,我什至不会考虑这样做。

关于java - 增强for循环空检查优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25625630/

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