二维数组转置是将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] 位置:
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
- 外层循环 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 中二维数组本质是“一维数组的数组”,允许每行长度不同(即不规则数组)。但严格意义上的“转置”要求所有行长度一致(即规则矩阵),否则无法定义统一的列数。如果强行对不规则数组转置,需先确定目标列数(例如取最长行的长度),缺失位置补默认值(如 0),这已属于自定义变换,不是数学意义的转置。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










