一维数组遍历的关键在于嵌入安全可控的数据转换逻辑。需依场景选循环方式:索引依赖用传统for,避免越界需显式检查;stream操作注意基本类型用arrays.stream()和boxed();状态依赖转换须配合标记变量与break/continue精准控制。

一维数组遍历本身不难,真正考验功力的是在遍历过程中嵌入数据转换逻辑——比如把数字转成带单位的字符串、按规则分组、生成新结构、或边遍历边校验再修正。关键不是“怎么循环”,而是“在哪插逻辑、怎么保安全、如何控输出”。
需要索引参与转换时,用传统 for 循环
当转换依赖位置信息(如偶数下标转大写、奇数下标乘2、首尾互换、生成带序号的描述),必须用带索引的 for。
- 索引直接参与计算:例如 arr[i] = i % 2 == 0 ? arr[i] * 10 : arr[i],不能用增强 for 实现
- 避免越界:访问 arr[i+1] 前检查 i + 1
- 批量修改安全:原地替换、归一化、单位换算等操作,都在 arr[i] = ... 中完成
只读转换且需类型/格式处理,用增强 for + 辅助容器
若目标是生成新集合(如把 int[] 转成 List
- 配合 ArrayList 或 StringBuilder:遍历时逐个转换并 add() 或 append()
- 注意 null 安全:如果是 Integer[],先判 num != null 再调用 toString()
- 避免装箱陷阱:int[] 不能直接用增强 for 转为 String,得先用 String.valueOf(num) 或 Integer.toString(num)
链式转换逻辑清晰、可复用,优先用 Stream API
当转换包含“过滤 → 映射 → 收集”多个步骤(如:正数 → 平方 → 转字符串 → 逗号拼接),Stream 表达力强、语义明确。
- 基本写法:Arrays.stream(arr).filter(x -> x > 0).mapToObj(x -> String.format("val_%d", x * x)).collect(Collectors.joining(", "))
- 基本类型数组别写错:Stream.of(arr) 是错的,必须用 Arrays.stream(arr)
- 要转对象流再操作?用 .boxed(),但大数据量慎用,避免频繁装箱
转换中嵌入状态判断,靠变量+条件块控制流程
复杂转换常含状态依赖,比如“遇到第一个负数就跳过后续所有”“累计和超阈值则截断”。这时不能只靠循环,得加状态变量和提前退出逻辑。
- 定义布尔标记或计数器:如 boolean seenNegative = false;,在循环内根据条件更新
- 用 break 或 continue 精准干预:满足条件后 break 退出,或 continue 跳过当前项
- 多层嵌套时加标签:三层以上逻辑中,用 outer: for + break outer 避免陷入深层循环
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











