如何反转Java二维数组的行?已有一维数组反转算法
反转Java二维数组的行顺序
你要实现的二维数组行反转,核心逻辑和你掌握的一维数组反转完全一致——只不过操作对象从单个int元素变成了二维数组中的一维行数组。
核心实现代码
基于你提供的一维反转思路,直接改写为行反转逻辑:
// 初始化题目中的二维数组 int[][] arr = { {1, 1, 1, 1, 1, 1, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 1}, {1, 0, 1, 0, 1, 0, 1, 0} }; // 反转行的核心循环 for (int i = 0; i < arr.length / 2; i++) { // 暂存当前行 int[] tempRow = arr[i]; // 交换当前行与对称位置的行 arr[i] = arr[arr.length - i - 1]; arr[arr.length - i - 1] = tempRow; }
代码说明
arr.length对应你定义的firstDimension(二维数组的总行数)- 循环只需执行总行数的一半次数,每一次循环完成一对行的交换
- 用
tempRow临时存储行数据,避免直接赋值导致的数组引用丢失
验证结果
执行上述代码后,二维数组的行顺序会被反转,得到你需要的结果:
[[1, 0, 1, 0, 1, 0, 1, 0], [0, 0, 0, 0, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1]]
扩展说明
如果你的二维数组是不规则数组(每行元素长度不同),这个逻辑依然有效——因为我们只是交换整个行的引用,不需要关心每行内部的元素结构。
内容的提问来源于stack exchange,提问作者IMBABOT
相关产品推荐
相关产品推荐

