我有一种比较两个对象列表的方法。
两个列表中的对象都是唯一的。
我使用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;
}
}
答案 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)
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)
标签工作(已经回复)
如果方法完全正确,检查是否相等,那么你也可以在对象匹配时从方法返回,看起来像一个足够小的方法,不会返回一个不好的做法。就个人而言,我发现它比使用标签更具可读性。