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

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循环语句中以使其成为单个嵌套代码?

最佳答案

第二个示例是清晰易懂的代码。在if块中嵌套for循环没有任何问题。这比您的第一个示例更加清楚。

但是,如果您坚持要合并它们,则listObject为null时,可以使用三元运算符提供一个空列表。使用Collections.emptyList表示不会发生任何迭代,也不会抛出NullPointerException

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


当您已经存在一个清晰的示例(例如您的第二个示例)时,我认为我不会使用这样的代码,但是此代码确实提供了一种在for循环中获取两个冒号的方法。

09-27 12:30