Wednesday 8 November 2017

java - How do I break multiple foreach loops?





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


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.



Answer





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



No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...