在传统的循环中,我们可以如下所示,制作单个嵌套层。
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语句中以使其成为单一嵌套代码?
答案 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
}
}