背景:
我想将主数组中特定数量的元素存储到其他数组中。主阵列是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]);
}
另一个选项可能是使用某个键直接访问其他数组以存储该值。但这意味着我需要在每个循环上计算正确的数组和键,这可能会更慢。
有经验吗?
有没有更好的(更快/更本机化)方式来实现这一目标?