public static void main(String[] args) { String valueByKey = "[{15:10},{10:8},{5:5}]"; JSONArray rules = JSON.parseArray(valueByKey); System.out.println(rules); System.out.println("外层 lambda, 里层 lambda"); rules.forEach(o -> { JSONObject rule = (JSONObject) o; rule.forEach((key, value) -> { if ("10".equals(key)) { System.out.println("aaaaa" + value); return; } System.out.println(value); }); }); System.out.println("外层 lambda, 里层 Entry"); rules.forEach(o -> { JSONObject rule = (JSONObject) o; for (Map.Entry<String, Object> entry : rule.entrySet()) { if ("10".equals(entry.getKey())) { System.out.println("bbbbbbb" + entry.getValue()); return; } System.out.println(entry.getValue()); } }); System.out.println("外层增强 for, 里层 lambda"); for (Object o : rules) { JSONObject rule = (JSONObject) o; rule.forEach((key, value) -> { if ("10".equals(key)) { System.out.println("ccccc" + value); return; } System.out.println(value); }); } System.out.println("外层增强 for, 里层 Entry"); for (Object o : rules) { JSONObject rule = (JSONObject) o; for (Map.Entry<String, Object> entry : rule.entrySet()) { if ("10".equals(entry.getKey())) { System.out.println("ddddddd" + entry.getValue()); return; } System.out.println(entry.getValue()); } } System.out.println("双层循环结束"); } [{"15":10},{"10":8},{"5":5}]外层 lambda, 里层 lambda10aaaaa85外层 lambda, 里层 Entry10bbbbbbb85外层增强 for, 里层 lambda10ccccc85外层增强 for, 里层 Entry10ddddddd8 结论 : fastjson.JSONArray 遍历跳出 采用 外层增强 for, 里层 Entry 方式, 才能跳出 但是双层遍历 后面面的不执行, 会直接跳出方法 !!! 优化 外层增强 for, 里层 Entry, 使得双层遍历跳出之后, 继续执行后面的代码 !! System.out.println("外层增强 for, 里层 Entry"); boolean flag = false; for (Object o : rules) { JSONObject rule = (JSONObject) o; for (Map.Entry<String, Object> entry : rule.entrySet()) { if ("10".equals(entry.getKey())) { System.out.println("ddddddd" + entry.getValue()); flag = true; break; } System.out.println(entry.getValue()); } if (flag) break; } System.out.println("双层循环结束");
有什么好的方法欢迎指出, 一直感觉可以继续优化