问题描述
我有四个foreach循环,这些循环遍历集合并根据条件做一些事情.
I have four foreach loops that iterate through the collections and based on a condition do something.
这是我现在正在编写的代码:
Here is the code that I am writing now:
boolean breakFlag = false;
String valueFromObj2 = null;
String valueFromObj4 = null;
for(Object1 object1: objects){
for(Object2 object2: object1){
// I get some value from object2
valueFromObj2 = object2.getSomeValue();
for(Object3 object3 : object2){
for(Object4 object4: object3){
// Finally I get some value from Object4.
valueFromObj4 = object4.getSomeValue();
// Compare with valueFromObj2 to decide either to break all the foreach loop
breakFlag = compareTwoVariable(valueFromObj2, valueFromObj4 );
if(breakFlag){break;}
} // fourth loop ends here
if(breakFlag){break;}
} // third loop ends here
if(breakFlag){break;}
} // second loop ends here
if(breakFlag){break;}
} // first loop ends here
主要对象(代码中的对象)来自第三方提供程序SDK,因此我无法更改该部分上的任何内容.我想问一下Stackoverflow社区是否有更好的方法来打破所有四个foreach循环.或者,如果还有其他方法可以重构此代码,使其更具可读性和可维护性.
The main object (objects in the code) comes from a third-party provider SDK, so I cannot change anything on that portion. I want to ask the Stack Overflow community if there is a better approach to break all the four foreach loops. Or if there is any other way to refactor this code to make it more readable and maintainable.
推荐答案
在最外面的循环上使用标签,当您要跳出所有循环时,将此标签包括在break
语句中.在下面的示例中,我修改了您的代码以使用标签OUTERMOST
:
Use a label on the outermost loop, and include this label in the break
statement when you want to jump out of all the loops. In the example below, I've modified your code to use the label OUTERMOST
:
String valueFromObj2 = null;
String valueFromObj4 = null;
OUTERMOST: for(Object1 object1: objects){
for(Object2 object2: object1){
//I get some value from object2
valueFromObj2 = object2.getSomeValue();
for(Object3 object3 : object2){
for(Object4 object4: object3){
//Finally I get some value from Object4.
valueFromObj4 = object4.getSomeValue();
//Compare with valueFromObj2 to decide either to break all the foreach loop
if( compareTwoVariable(valueFromObj2, valueFromObj4 )) {
break OUTERMOST;
}
}//fourth loop ends here
}//third loop ends here
}//second loop ends here
}//first loop ends here
这篇关于如何中断多个foreach循环?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!