欢迎访问宙启技术站
智能推送

Java函数实现数组转置操作

发布时间:2023-06-13 21:53:54

数组转置是一种常见的数组操作,其目的是将二维数组中每行的元素与其对称的列元素交换位置,从而得到一个新的二维数组。在Java中实现数组转置操作可以通过两种途径:一种是使用循环遍历实现,另一种是使用内置方法实现。

一、循环遍历实现数组转置

循环遍历是一种常见的实现数组转置的方法,其主要思路是将二维数组中第i行第j列的元素与第j行第i列的元素交换位置,注意循环次数只需要遍历数组的一半即可,否则会出现重复交换的情况。下面是Java代码示例:

public static int[][] transpose(int[][] array) {

    int rows = array.length;

    int columns = array[0].length;

    int[][] newarray = new int[columns][rows];

    for (int i = 0; i < rows; i++) {

        for (int j = 0; j < columns; j++) {

            newarray[j][i] = array[i][j];

        }

    }

    return newarray;

}

该函数接受一个二维数组,首先获取数组中元素的行数和列数,然后创建一个新的二维数组newarray,将每行的元素与其对称的列元素交换位置,最后返回新的二维数组newarray。

二、使用内置方法实现数组转置

Java提供了内置方法Arrays.deepToString()和Arrays.deepCopyOf(),可以用于实现数组转置。其中Arrays.deepCopyOf()方法可以创建一个新数组,并将指定源数组的所有元素复制到新数组中,Arrays.deepToString()方法则将二维数组转换为字符串,方便输出和查看。下面是Java代码示例:

public static int[][] transpose(int[][] array) {

    int rows = array.length;

    int columns = array[0].length;

    int[][] newarray = new int[columns][rows];

    for (int i = 0; i < columns; i++) {

        newarray[i] = Arrays.stream(array).mapToInt(row -> row[i]).toArray();

    }

    return newarray;

}

该函数使用了Java 8的流式编程的方式,首先获取源数组的行数和列数,然后创建一个新的二维数组newarray,通过对每列的操作,将第i列中的元素提取出来,并创建一个新的行数组,最后将新的行数组添加到新的数组newarray中,返回新的二维数组newarray。

总之,无论是通过循环遍历还是使用内置方法,Java实现数组转置操作都是比较简单的。不同的实现方式使用了不同的技术,都可以达到同样的效果,开发者可以根据需求选择相应的方法。