java:将1D数组拆分为较小的1D数组但包含2D信息

时间:2014-11-11 20:50:03

标签: java arrays pointers split elements

背景:

我想将主数组中特定数量的元素存储到其他数组中。主阵列是1D但包含2D信息。附加阵列也是1D。因此,在迭代主数组时,我需要在数组之间交换以正确存储数据。这就是为什么它添加或添加信息。

所以基本上我想将带有2D信息的一维数组分成较小的一维数组,每一个都包含一个二维信息包。

很快:将数组拆分成小数组并将某些数组连接到新数组。

一个例子:

{1,1,2,2,1,1,2,2}

分为

{1,1},{2,2},{1,1},{2,2}

并加入

{1,1,1,1},{2,2,2,2}。

可能的解决方案:

我可以解决它迭代原始数组并调用存储新信息的对象的add方法。我将一个值添加到已分配数组的第一个非初始化元素 - 有点附加数据。

以下自我解释和简化(如不关心OOB错误)代码显示了如何实现它。

public class Example{

  private byte[] array;
  private int pointer=0;

  public Example(int elements){
    array = new byte[elements]
  }

  public add(byte value) {
    array[pointer] = value;
    pointer++;
  }

}

迭代可能是这样的,代码中的某个地方:

byte[] mainarray;
int width, height, sectionWidth, sectionHeight;

// setting mainarray;
// setting width, height, sectionWidth, sectionHeight

Example[] example = new Example[(width / sectionWidth) * (height / sectionHeight)];

for (int i = 0; i<mainarray.length; i++) {
  int x = i / height / sectionWidth;
  int y = i / width / sectionHeight * (width / sectionWidth);
  example[x + y].add(mainarray[i]);
}

另一个选项可能是使用某个键直接访问其他数组以存储该值。但这意味着我需要在每个循环上计算正确的数组和键,这可能会更慢。

有经验吗?

有没有更好的(更快/更本机化)方式来实现这一目标?

0 个答案:

没有答案