gpt4 book ai didi

java - 我应该尽量减少 "if"语句或 "for"循环的数量吗?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:56:36 24 4
gpt4 key购买 nike

我有一个对象列表,需要对每个元素应用多个有条件的操作。采用“if-for”方法还是“for-if”方法更有效。换句话说,我应该尽量减少 if 语句的数量还是减少 for 循环的数量?有这方面的标准吗?

确定这一点的可靠方法是什么?

“If-For”方法最小化 if 语句

public void ifForMethod() {
if (conditionA) {
for (Object o : listOfObjects) {
doA(o);
}
}

if (conditionB) {
for (Object o : listOfObjects) {
doB(o);
}
}
}

“For-If” 最小化 for 循环的方法

public void forIfMethod() {
for (Object o : listOfObjects) {
if (conditionA) {
doA(o);
}
if (conditionB) {
doB(o);
}

}
}

假设

  • 条件是简单的 boolean 值,在迭代时不会改变。
  • 一个或多个条件为真。 (多于2个条件)
  • 每个条件都独立于其他条件。
  • 内部方法完全不冲突或相互影响。它们的执行顺序无关紧要。

最佳答案

没有理由对列表进行 2 次传递。

假设:谓词是简单的 boolean 值,如果它们必须被评估,那么显然成本可以改变事情。

If ((condtionA || conditionB) == true) 那么 If-for 和 For-If 都是 1 pass。如果两个谓词都为真,那么显然您只想通过一次。

doA 和 doB 是什么并不重要,因为我们假设它们在 If-for 和 For-If 中是相同的。

如果谓词可以在评估过程中发生变化,那么必须考虑这一点。

您问的是一个笼统的问题,所以答案笼统而模糊,没有更多细节。

现在您已经提供了额外的信息(列表只有 5 个元素长,这是构建过程的一部分,谓词是静态 boolean 值)我们可以看到这里的瓶颈是 doA/B 函数。因此,您应该只执行一次循环。静态 boolean 检查可以忽略不计。

关于java - 我应该尽量减少 "if"语句或 "for"循环的数量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19231234/

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