如果长度不同,如何获得二维数组最大尺寸

时间:2015-07-08 10:05:10

标签: java arrays

我试图动态设置我的数组大小。这里我的输入值数组值是

int[][] dubArr={{2,5,6},{2,5,4,7}};

我想设置我的数组大小

int[][] size=new int[dubArr.length][dubArray[0].length];

但问题是在这里我不能存储我的第二个数组的最后一个值

不要说[dubArray[1].length];

2 个答案:

答案 0 :(得分:3)

查找第二个维度的最大长度并在一行中创建新数组会使数组成方形,因此您将丢失有关其形状的信息。所以我想你真正想要的是它原始形状的原始数组的深层拷贝:

if (dubArr == null) {
    return null;
}
final int[][] size = new int[dubArr.length][];
for (int i = 0; i < dubArr.length; i++) {
    size[i] = dubArr[i].clone();
}
return size;

即使dubArrnull或为空,也会有效。

答案 1 :(得分:1)

试试这个(Java8):

    int[][] dubArr={{2,5,6},{2,5,4,7}};
    int[][] size =new int[dubArr.length][Stream.of(dubArr).mapToInt(a -> a.length).max().getAsInt()];