替代'continue'关键字

Anj*_*waj 9 java loops continue

我正在浏览关于continue关键字的问题,以便更好地理解它,我在这个答案中偶然发现了这一行

这些可以是维护时间炸弹,因为"继续"/"中断"与循环之间没有直接联系,它继续/打破除上下文之外;

我有这个for循环:

for(Object obj : myArrayList){
  if(myArrayList.contains(someParticularData)){
       continue;
    }
   //do something
}
Run Code Online (Sandbox Code Playgroud)

现在,我的问题是 - continue以我上面所做的方式使用它还是有问题吗?如果是,我可以采用的替代方法是什么?任何形式的指导都会有所帮助.谢谢.

更新:我在这种特定情况下的目标是迭代a Collection(ArrayList在这种情况下),并检查是否包含某些特定数据,如果为真,则跳过该迭代.我被指出这myArrayList.contains(someParticularData)是一次性操作,并且最好在循环外执行该检查,这正是我所寻找的.另外,我了解到如果我可以continue根据某些条件使用if(someConditon),我可以通过使用来避免它if(!someCondition).

小智 16

for(Object obj : myArrayList){
    if(someCondition){
       continue;
    }
    //do something 
}
Run Code Online (Sandbox Code Playgroud)

可以替换为:

for(Object obj : myArrayList){
    if(!someCondition){
       //do something 
    }
}
Run Code Online (Sandbox Code Playgroud)

恕我直言,只要你没有很多(如2-3 continue/ break/ return),维修将是好的.


Dmi*_*nko 14

这段代码没用

  for(Object obj : myArrayList) {
    // You're checking again and agian the condition that's loop independent
    if(myArrayList.contains(someParticularData)){
      continue;
    }
   //do something
  }
Run Code Online (Sandbox Code Playgroud)

一个更有效的实现(检查是否需要循环在所有第一)

  if (!myArrayList.contains(someParticularData))
    for(Object obj: myArrayList) {
      //do something
    }
Run Code Online (Sandbox Code Playgroud)

在这样的条件下继续很方便:

  for(Object obj : myArrayList) {
    // Check for each item: do we need to proceed this item
    if (someArrayList.contains(obj))
      continue;

    //do something
  }
Run Code Online (Sandbox Code Playgroud)

  • 接得好!我错过了 (2认同)