gpt4 book ai didi

java - 适用于所有数据类型的转置函数

转载 作者:行者123 更新时间:2023-11-30 03:07:17 24 4
gpt4 key购买 nike

我在java中有一个函数,它可以转置二维数组。但这个函数只需要double[][]。有没有办法让它接受所有类型的数据类型?(我的意思是像一个全局函数,接受任何数据类型作为输入并返回该特定数据类型的结果?)我的代码如下:

public static double[][] transpose(double[][] a)    
{
double[][] trans = new double[a[0].length][a.length];
if (a.length > 0)
{
for( int i = 0; i < a[0].length; i++)
{
for(int j=0; j<a.length; j++)
{
trans[i][j] = a[j][i];
}
}
}return trans;
}

最佳答案

有办法,但我认为不太好走。您可以将函数的返回类型设为 Object:

public static Object[][] transpose(Object[][] a)    
{
Object[][] trans = new Object[a[0].length][a.length];
if (a.length > 0)
{
for( int i = 0; i < a[0].length; i++)
{
for(int j=0; j<a.length; j++)
{
trans[i][j] = a[j][i];
}
}
}
return trans;
}

您可以通过将数组转换为对象数组并将其传递给函数来使用此方法:

    int[][] multi = new int[][] { { 1, 2 }, { 3, 4 }, { 5, 5 }, { 7, 6 }, { 9, 8 } };

Object[][] o = new Object[multi[0].length][multi.length];

for (int i = 0; i < multi[0].length; i++) {
for (int j = 0; j < multi.length; j++) {
o[i][j] = multi[j][i];
}
}

transpose(o);

但请注意,您还必须向后转换返回值:

    Object[][] returnValue = transpose(o);
int[][] multiTransposed = new int[returnValue[0].length][returnValue.length];

for (int i = 0; i < returnValue[0].length; i++) {
for (int j = 0; j < returnValue.length; j++) {
multiTransposed[i][j] = (int)returnValue[j][i];
}
}

这是一个有点棘手的解决方法。在提供函数之前,您始终必须知道数组的数据类型。在我的示例中,它是 int

希望有帮助!

关于java - 适用于所有数据类型的转置函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34433216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com