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, 里层 lambda
10
aaaaa8
5
外层 lambda, 里层 Entry
10
bbbbbbb8
5
外层增强 for, 里层 lambda
10
ccccc8
5
外层增强 for, 里层 Entry
10
ddddddd8
结论 : 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("双层循环结束");
有什么好的方法欢迎指出, 一直感觉可以继续优化