在Java中,翻转二维数组通常意味着将数组的行和列互换,即实现转置操作。以下是一个简单的Java方法,用于实现二维数组的转置:
```java
public class ArrayUtils {
public static int[][] transpose(int[][] matrix) {
int m = matrix.length;
int n = matrix.length;
int[][] transposed = new int[n][m];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
transposed[j][i] = matrix[i][j];
}
}
return transposed;
}
public static void main(String[] args) {
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int[][] transposedMatrix = transpose(matrix);
for (int[] row : transposedMatrix) {
for (int value : row) {
System.out.print(value + " ");
}
System.out.println();
}
}
}
上述代码定义了一个`transpose`方法,该方法接受一个二维数组`matrix`作为参数,并返回一个新的二维数组,其中原数组的行和列互换了位置。在`main`方法中,我们创建了一个示例矩阵,并打印出转置后的矩阵。
如果你需要的是沿主对角线翻转(即行列互换),那么上述方法已经实现了所需功能。如果你需要的是沿副对角线翻转,那么你需要交换`matrix[i][j]`和`matrix[j][i]`,如下所示:
```java
public class ArrayUtils {
public static int[][] transposeDiagonal(int[][] matrix) {
int m = matrix.length;
int n = matrix.length;
int[][] transposed = new int[n][m];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
transposed[j][i] = matrix[i][j];
}
}
return transposed;
}
public static void main(String[] args) {
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int[][] transposedMatrix = transposeDiagonal(matrix);
for (int[] row : transposedMatrix) {
for (int value : row) {
System.out.print(value + " ");
}
System.out.println();
}
}
}
在这个修改后的方法中,我们仍然交换了`matrix[i][j]`和`matrix[j][i]`,因此结果与转置相同。如果你需要的是沿反对角线翻转,那么你需要交换`matrix[i][j]`和`matrix[m - 1 - j][i]`,如下所示:
```java
public class ArrayUtils {
public static int[][] transposeAntiDiagonal(int[][] matrix) {
int m = matrix.length;
int n = matrix.length;
int[][] transposed = new int[n][m];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
transposed[j][m - 1 - i] = matrix[i][j];
}
}
return transposed;
}
public static void main(String[] args) {
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int[][] transposedMatrix = transposeAntiDiagonal(matrix);
for (int[] row : transposedMatrix) {
for (int value : row) {
System.out.print(value + " ");
}
System.out.println();
}
}
}
在这个方法中,我们交换了`matrix[i][j]`和`matrix[m - 1 - j][i]`,实现了沿反对角线的翻转。
请根据你的具体需求选择合适的方法