当前,我有一个大小为N的数组。我正在尝试从数组中复制每X个字节的字节数。

例如,如果数组的大小为10,而我想要数组的大小为3。我将复制前3个元素,然后复制下3个和后1个元素。

目前,我正在使用以下算法:

int I = 0;
int sub = bytes.length;
int counter = 0;
for (I = 0; I < bytes.length; ++I) {
    if (I % 3 == 0 && I != 0) {
       NewArray[counter] = Arrays.copyOfRange(bytes, I - 3, I));
        sub -= 3;
        ++counter;
    }
}

NewArray[counter] = Arrays.copyOfRange(bytes, I - sub, I)); //Copy remainder.

有更有效或更体面的方式来做我想要的吗?这个算法看起来很糟糕= l

有什么想法可以改善或至少有提示吗?

最佳答案

那这个呢:

int x = 3;  // chunk size
int len = bytes.length;
int counter = 0;

for (int i = 0; i < len - x + 1; i += x)
    newArray[counter++] = Arrays.copyOfRange(bytes, i, i + x);

if (len % x != 0)
    newArray[counter] = Arrays.copyOfRange(bytes, len - len % x, len);

关于java - 将数组拆分为X个长度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19237371/

10-11 22:26
查看更多