我们可以在迭代器for循环中添加额外的停止条件吗?

时间:2016-01-13 22:41:57

标签: java for-loop coding-style

在传统的循环中,我们可以如下所示,制作单个嵌套层。

for (int i=0; listObject != null && i < listObject.size(); i++) {
    // Do whatever we want
}

但是,对于每个循环使用以下样式,我需要一个双嵌套代码: -

if (listObject != null) {
    for (Object object: listObject) {
        // Do whatever we want
    }
}

是否可以将listObject != null条件嵌入到for-loop语句中以使其成为单一嵌套代码?

2 个答案:

答案 0 :(得分:3)

你的第二个例子是清晰易懂的代码。在if块中嵌套for循环没有任何问题。它比你的第一个例子更清晰。

但是如果你坚持组合它们,你可以使用三元运算符来提供一个空列表,如果listObject为空。使用Collections.emptyList表示不会进行迭代,也不会抛出NullPointerException

for (Object object : listObject == null ? Collections.emptyList() : listObject)

当我的第二个例子之类的明显例子已经存在时,我认为我不会使用这样的代码,但是这段代码确实提供了在for循环中获取两个冒号的方法。

答案 1 :(得分:0)

为了简明起见,在有一个嵌套循环的同时,我决定让它成为下面的函数

void checkCondition(List<Object> listObject) {
   if (listObject == null) return;

   for (Object object: listObject) {
       // Do whatever
   }
}