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

Can we add additional stopping condition in iterator for-loop?

在常规循环中,我们可以像下面这样,制作单个嵌套层。

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 循环中获取两个冒号的方法。

为了简洁起见,在有一个嵌套循环的同时,我决定把它变成如下函数

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

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