java - 将大数组分成不同大小的 block 以存储在多维数组中

标签 java arrays multidimensional-array

[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/

相关文章:

javascript - 将数组值拆分为对象?

java如何找到二维数组中每一行的最大值

java - ASM 在解释器上合并两个值对象

java - 将 ant 与 Netbeans 保存操作结合使用

通配符、基类和子类的 Java 泛型问题

java - 没有出现在 Jersey 2 上使用 swagger 和 grizzly 的列表

arrays - MongoDB - 查询数组的最后一个元素?

c - 如何显示字符数组?

javascript将多维数组中的每个元素加倍的方法

PHP 通过键和值比较两个多维数组