替代'continue'关键字

时间:2014-02-04 06:32:55

标签: java loops continue

我正在浏览有关continue关键字的问题,以便更好地了解它,我偶然发现了这一行in this answer

  

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

我有这个for循环:

for(Object obj : myArrayList){
  if(myArrayList.contains(someParticularData)){
       continue;
    }
   //do something
}

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

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

3 个答案:

答案 0 :(得分:15)

for(Object obj : myArrayList){
    if(someCondition){
       continue;
    }
    //do something 
}

可以替换为:

for(Object obj : myArrayList){
    if(!someCondition){
       //do something 
    }
}

恕我直言,如果您没有太多(例如2-3 continue / break / return),维护将没有问题。

答案 1 :(得分:14)

此代码少用

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

更有效的实现是(首先检查你是否需要循环

  if (!myArrayList.contains(someParticularData))
    for(Object obj: myArrayList) {
      //do something
    }

继续在以下条件下很方便:

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

    //do something
  }

答案 2 :(得分:1)

无论何时循环某个值范围,您都要处理初始值和最终值之间的每个值......

例如,如果您要添加奇数。 使用循环是很方便的,循环将增加2而不是为每个奇数值继续,

for (int i = 0; i < 100 ; i=i+2){
   // do addition
}

但是如果要修改在循环中检查的值,则continuebreak是实施的好方法。

例如,

boolean flag = false;
// flag will be modified in some iteration of loop, but you don't know which.
for ( int i = 0 ; i < 100 ; i++ ) {
   if ( flag ) {
      continue;
   }
   // flag modified somewhere..
}
相关问题