【发布时间】:2013-10-14 09:41:41
【问题描述】:
我有一个对象列表,需要对每个元素应用多个有条件的操作。采用“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);
}
}
}
假设
- 条件是简单的布尔值,在迭代时不会改变。
- 一个或多个条件为真。 (有2个以上的条件)
- 每个条件都独立于其他条件。
- 内部方法之间完全不冲突或交互。它们的执行顺序无关紧要。
【问题讨论】:
-
第二个更有意义。它表明您将始终循环遍历元素,然后根据条件更改元素。它也可能与多线程有关。如果条件A 或条件B 在循环中发生变化,“For-If”将提供与“If-For”不同的结果。这取决于你想要完成什么。如果条件A 可以与条件B 同时为真,那么“For-If”的效率更高。
-
什么对你来说更具可读性?两者都是 O(n) ,只有在最坏的情况下才会改变。
-
这取决于
doA和doB做什么。 -
标准是爱因斯坦所说的:“一切都应该尽可能简单,但不能简单。”
-
@Obicere 条件每次都会以相同的方式评估。实际上有几个条件,平均 75% 是正确的。
标签: java performance if-statement for-loop