java中一维数组转二维矩阵需确保长度等于行×列,否则抛异常或补零;合法时用双重循环或索引公式i/cols逐行填充。

Java 中一维数组转二维矩阵,核心是按行优先(Row-major)顺序将元素依次填入新二维数组,关键在于确保原数组长度等于目标行列乘积,否则会出错或丢数据。
检查维度合法性
重构前必须验证:一维数组长度 必须等于 指定的行数 × 列数。不满足时应明确处理——抛异常或截断/补零(根据业务决定)。
- 合法:长度为 12 的数组可转为 3×4、4×3、2×6、6×2、1×12 等矩阵
- 非法:长度 10 的数组无法精确转为 3×4(需 12 个元素),强行填充会导致
ArrayIndexOutOfBoundsException或逻辑错误
手动逐行赋值(推荐,清晰可控)
创建目标二维数组,用双重循环按行主序填充。索引转换公式:一维索引 i 对应二维位置 [i / cols][i % cols]。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
int[] arr = {1, 2, 3, 4, 5, 6};
int rows = 2, cols = 3;
if (arr.length != rows * cols) {
throw new IllegalArgumentException("数组长度不匹配目标维度");
}
int[][] matrix = new int[rows][cols];
for (int i = 0; i <h3>使用 Arrays.copyOfRange 分段构造(适合每行独立处理)</h3><p>对每行调用 <code>Arrays.copyOfRange</code> 提取对应子数组,再组合成二维结构,语义更直观。</p>
- 第
r行对应一维索引范围:[r * cols, (r + 1) * cols) - 适用于需对每行做额外处理(如逆序、过滤)的场景
int[][] matrix = new int[rows][cols]; for (int r = 0; r <h3>注意边界与类型兼容性</h3><p>该方法适用于任意引用或基本类型数组(如 <code>String[]</code>、<code>double[]</code>),只需替换对应类型声明。但要注意:</p>
- 原始类型数组(如
int[])不能直接转为Integer[][],需手动装箱 - 若原数组为
null,需提前判空,避免NullPointerException - 行列数为 0 时(如
rows=0或cols=0),需单独处理空矩阵逻辑
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










