嵌套循环是处理Java数组复杂逻辑的核心:二维数组用行列双层for加条件过滤;嵌套List需类型判断与null检查;查找唯一元素时用i==j标记状态。

Java 数组遍历中遇到复杂逻辑,比如需要逐层判断、筛选、关联或跳过特定组合时,靠单层循环很难完成。核心思路是:用嵌套结构匹配数据层级,用条件嵌套控制执行路径,再配合 break/continue 精准干预流程。
二维数组的行列级条件过滤
当处理表格类数据(如成绩矩阵、坐标网格),常需同时满足行约束和列约束。例如:只处理第 2 行起、且列值大于 5 的所有元素。
- 外层 for 控制行索引,加 if 判断行号是否达标
- 内层 for 遍历该行所有列,在循环体内用 if 检查当前元素值
- 避免在内层循环里反复计算 array[i].length,建议提前存为局部变量
嵌套 List 的深度遍历与类型判断
面对 List<List<Object>> 这类结构,不能只依赖增强 for,因为子集合内部可能含不同类型的值(String、Integer、甚至 null)。
- 外层增强 for 遍历每个子 List
- 内层传统 for 或增强 for 遍历子 List 元素,但每取一个值先用 instanceof 判断类型
- 遇到 null 要显式跳过,否则调用方法会抛 NullPointerException
查找唯一元素时的 i==j 逻辑本质
这不是语法技巧,而是利用循环变量生命周期设计的状态标记。外层 i 定位待检元素,内层 j 从 0 扫到 i−1 做去重比对。
立即学习“Java免费学习笔记(深入)”;
- 若中途 arr[i] == arr[j] 成立 → break → j
- 若 j 自然递增至 i → 循环结束 → i == j 成立 → 说明前面无重复 → 是唯一元素
- 这个判断必须放在内层循环之后、外层循环体末尾,顺序不能颠倒
带标签的 break/continue 应对多层退出
三层及以上嵌套时,普通 break 只退出最近一层,容易导致逻辑错乱。例如在树形遍历 + 条件过滤 + 异常检测三层嵌套中,发现非法值要立刻跳出全部循环。
- 在外层循环前加标签,如 outer: for (int i = ...) { ... }
- 在最内层用 break outer; 或 continue outer;
- 标签名须合法标识符,且不能与变量名冲突


















