如何突破嵌套循环?

时间:2011-01-02 14:50:30

标签: java

我有一种比较两个对象列表的方法。

两个列表中的对象都是唯一的。

我使用2级嵌套for循环

如果两个对象匹配正确,我想终止内部for循环的剩余周期。

是否可以在Java中终止for循环的剩余迭代?!

由于

示例代码:

public class NestedForLoops {

  public static void main(String[] args) {
    String one = "abcdefgh";
    String two = "ijkhmnop";
    System.out.println(nestedForLoop(one, two));

  }

  public static String nestedForLoop(String one, String two)
  {
    String res = "";
    for(int i = 0; i < one.length(); i++)
    {
        for(int j = 0; j < two.length(); j++)
        {
            if(one.charAt(i) == two.charAt(j)){
                System.out.println(i + "   " + j);
                res += one.charAt(i);
                continue;
            }
        }
    }
    return res;
  }

}

6 个答案:

答案 0 :(得分:4)

打破内心:

for (Object o1 : list1)
   for (Object o2 : list2)
        if (o1.equals(o2))
            break;

Break for for循环:

outer: for (Object o1 : list1)
   for (Object o2 : list2)
        if (o1.equals(o2))
            break outer;

答案 1 :(得分:1)

在内部循环中使用break;语句。如果你想终止外部的那个,你必须给外面一个标签并使用break label;

答案 2 :(得分:1)

使用multi-level break

outside:
for (...)
  for (...) 
    if (found) break outside;

或者,创建一个单独的方法并使用return代替break应该更具可读性,因为返回语句更常见。

答案 3 :(得分:1)

是的。只需添加一个if语句来检查两个对象的匹配,并在if中放入一个break语句。这是代码示例:

while(coinditions for loop 1)
{
    // loop body
    while(conditions for loop 2)
    {
         //loop body

         if(object1.compareTo(object2)==0)
         {
              break;
         }
    }
}

答案 4 :(得分:1)

public boolean foundEqual(List<Object> list1, List<Object> list2) {
  if (list1 == null || list2 == null) {
    throw new NullPointerException("Lists can not be null");
  }

  for (Object o1 : list1)
   for (Object o2 : list2)
        if (o1.equals(o2)) {
            return true;
        }

  return false;
}

答案 5 :(得分:0)

标签工作(已经回复)

如果方法完全正确,检查是否相等,那么你也可以在对象匹配时从方法返回,看起来像一个足够小的方法,不会返回一个不好的做法。就个人而言,我发现它比使用标签更具可读性。