二维数组转置是将m行×n列的原数组变为n行×m列的新数组,满足transposedj = originali;必须新建数组,不可原地翻转;不规则数组不满足严格转置定义。

二维数组转置,就是把原数组的行变成列、列变成行。核心是:新数组的行数等于原数组的列数,新数组的列数等于原数组的行数;且 transposed[i][j] = original[j][i]。
明确转置后的维度关系
假设原数组是 m 行 × n 列(即 int[m][n]),那么转置后一定是 n 行 × m 列(即 int[n][m])。不能直接在原数组上“翻转”,必须新建一个尺寸互换的数组来存放结果。
遍历原数组并按规则赋值
用两层循环遍历原数组的每个元素 original[i][j],把它放到新数组的 transposed[j][i] 位置:
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
- 外层循环 i 从 0 到 m−1(遍历原数组的行)
- 内层循环 j 从 0 到 n−1(遍历原数组的列)
- 每次执行
transposed[j][i] = original[i][j]
注意边界与空数组处理
实际编码前需检查原数组是否为 null 或长度为 0;若原数组为空(如 new int[0][5]),则转置后应为 new int[5][0];若原数组某行为空(如 arr[2] == null),需额外判空,否则会抛 NullPointerException。
立即学习“Java免费学习笔记(深入)”;
适用于不规则二维数组吗?
Java 中二维数组本质是“一维数组的数组”,允许每行长度不同(即不规则数组)。但严格意义上的“转置”要求所有行长度一致(即规则矩阵),否则无法定义统一的列数。如果强行对不规则数组转置,需先确定目标列数(例如取最长行的长度),缺失位置补默认值(如 0),这已属于自定义变换,不是数学意义的转置。

















