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.
Use a label on the outermost loop, and include this label in the
breakstatement when you want to jump out of all the loops. In the example below, I’ve modified your code to use the labelOUTERMOST: