我有一种方法可以将一个较大的Array
切成几个较小的数组。我希望它将这些数组作为二维数组返回。到目前为止切片工作但我不知道如何将arr2[]
元素写入slice[][]
。问题是数组slice[?][i]
的数量未知。
private short[][] slice(short array1[], int sliceSize) {
short arr2[]=null;
short slice[][]=null;
for (int offset = 0; offset < array1.length ; offset+=sliceSize) {
arr2 = Arrays.copyOfRange(array1, offset, offset+sliceSize);
for(int i=0; i<arr2.length; i++) {
System.out.print("\n value: "+ String.valueOf(arr2[i]));
// slice[?][i]=arr2[i];
}
}
return slice;
}
答案 0 :(得分:0)
您可以从orignal数组长度轻松了解所需的切片数量。
int sliceCount = arr1.length / sliceSize + 1;
short[][] slice = new short[sliceCount][];
请注意,如果长度是切片大小的倍数,我们最终会得到一个到多个单元格,我们可以简单地将1减去arr1.length
来纠正它(没有保留它)代码简单)
然后,你只需像你一样做一些复制并将结果存储在其中。
由于Arrays.copyOfRange
每次调用都会返回一个新的数组实例,因此可以直接存储实例,而不是迭代数组。
for (int i = 0; i < sliceCount; i++) {
arr2 = Arrays.copyOfRange(array1, i * sliceSize, ( i + 1 ) * sliceSize);
slice[i] = arr2;
}
return slice;
示例:
[1,2,3,4,5,6,7,8,9] into slice of 4 length
-> [
[1,2,3,4],
[5,6,7,8],
[9,0,0,0]
]