在常规循环中,我们可以如下所示,制作单个嵌套层。
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
循环中获取两个冒号的方法。