[3, 0, 1, 4, 4, 0, 3, 2, 1, 3, 1, 2, 4 , 3, 3, 4, 2, 3, 0, 4, 3]
上面数组中的粗体元素表示该元素后面有多少个元素属于该 block ,将这些 block 划分为数组并将它们存储在多维数组中的最佳方法是什么,其中每行本质上都保存一个 block ,以便我们有这样的东西:
int numOfChunks = 5 //Assuming we already know the number of chunks in the array
int[][] array = { {0, 1, 4},
{0, 3, 2, 1},
{1, 2, 4},
{3, 4, 2},
{0, 4, 3} }
提前致谢。
最佳答案
还有一种方法可以预先计算数组的长度 - 使用 List 来存储正在提取的 int[] 数组。最后将其转换为正确大小的数组:
public static int[][] blockSplitter(int[] data) {
List<int[]> blocks = new ArrayList<int[]>();
for (int i = 0; i < data.length;) {
int blockSize = data[i];
int[] block = Arrays.copyOfRange(data, i + 1, i + blockSize + 1);
blocks.add(block);
i += (blockSize + 1);
}
return (int[][]) blocks.toArray(new int[blocks.size()][]);
}
关于java - 将大数组分成不同大小的 block 以存储在多维数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20116243/