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



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

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
   }
}

最新更新