在Java中,转置一个数组通常意味着将数组的行和列互换,即将原数组的行变成列,列变成行。以下是一些转置数组的常见方法:
方法一:使用循环交换元素
public class ArrayTranspose {public static void main(String[] args) {int[][] array = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};int[][] transposed = new int[array.length][array.length];for (int i = 0; i < array.length; i++) {for (int j = 0; j < array.length; j++) {transposed[j][i] = array[i][j];}}// 打印转置后的数组for (int i = 0; i < transposed.length; i++) {for (int j = 0; j < transposed.length; j++) {System.out.print(transposed[i][j] + " ");}System.out.println();}}}
方法二:使用Java集合的toArray()方法
import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class ArrayTranspose {public static void main(String[] args) {Listlist = new ArrayList<>(); list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);list.add(6);Integer[] array = list.toArray(new Integer);Integer[][] transposed = new Integer[array.length][];for (int i = 0; i < array.length; i++) {transposed[i] = new Integer[array.length - 1 - i];for (int j = 0; j < array.length - 1 - i; j++) {transposed[i][j] = array[j + i + 1];}}// 打印转置后的数组for (int i = 0; i < transposed.length; i++) {for (int j = 0; j < transposed.length; j++) {System.out.print(transposed[i][j] + " ");}System.out.println();}}}
方法三:使用Java 8的流API
import java.util.Arrays;import java.util.stream.Collectors;public class ArrayTranspose {public static void main(String[] args) {int[][] array = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};int[][] transposed = Arrays.stream(array).map(row -> Arrays.stream(row).boxed().collect(Collectors.toList())).map(list -> list.stream().mapToInt(Integer::intValue).toArray()).toArray(int[][]::new);// 打印转置后的数组for (int i = 0; i < transposed.length; i++) {for (int j = 0; j < transposed.length; j++) {System.out.print(transposed[i][j] + " ");}System.out.println();}}}
以上代码展示了如何使用不同的方法在Java中转置一个二维数组。您可以根据自己的需要选择合适的方法。需要注意的是,转置操作会创建一个新的数组来存储转置后的数据,原数组不会被改变

