在循环中使用Java“ for each”和“ continue”

时间:2019-10-14 13:14:13

标签: java loops

我有一个很大的方法,看起来像这样:

for (Person person : persons) {
   if (!person.isValid()) {
      continue;
   }
   ....
   boolean isDeleted = deletePersonFromDB1(person);
   if (!isDeleted) {
     continue;
   }
   ....

}

基本上,我想从其他数据库源中删除人员列表。如果任何操作失败,我想继续下一个人。 我想这样简化,然后将我的业务逻辑放入方法中:

for (Person person : persons) {
    checkValidityAndDelete(person)
}

但是不幸的是,我无法在方法continue中使用单词checkValidityAndDelete

2 个答案:

答案 0 :(得分:0)

使您的checkValidityAndDelete方法返回一个布尔值,以指示此人是否有效且已被删除:

private boolean checkValidityAndDelete(Person person) {
  return person.isValid() && deletePersonFromDB1(person);
}

因此,如果checkValidityAndDelete返回false,则可以continue,如果返回true,则可以继续执行其余的代码逻辑。如果您愿意,也可以不使用continue来实现此目的:

for (Person person : persons) {
  if(checkValidityAndDelete(person)) { // If the person is valid, 
    // perform logic...
  }
  // if not valid, skip if, and continue to next person...
}

答案 1 :(得分:0)

如果您希望将循环中的一切拉出到另一个方法,则另一种选择是简单地从其中return〜触发该方法停止。

public void checkValidity(final Person person) {
    if (person.something) {
        return;
        // From the calling loop, this will act as a continue
        // since the method call would stop, and so the next
        // loop iteration would start.
    }
    // Do some more stuff
}