重新填充一个 java 数组

Re-fill a java array

我需要快速填充一大堆固定大小的数组。我的想法是:

public void fillArrays(){
    int[] filler_array = {0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
    System.arraycopy(filler_array, 0, spikeWaveB1, 0, 22);
    filler_array = {0xF4, 0x26, 0x58, 0x8A, 0xBC, 0xEE, 0x20, 0x52, 0x84, 0xB6, 0xE8, 0xF4, 0xC2, 0x90, 0x5E, 0x2C, 0xFA, 0xC8, 0x96, 0x64, 0x32, 0x00};
    System.arraycopy(filler_array, 0, spikeWaveB2, 0, 22);
    filler_array = {...  ...};
    System.arraycopy(... ...);
}

本质上,我需要一种用 {x,y,z} 填充已填充数组的方法。 如何用新的值列表重新填充它?

非常感谢任何帮助。 问候, 乔治

尝试使用 ArrayList,然后在最后将其转换为数组。

List<Integer> list = new ArrayList<>();
.... // your inserts into the list here
int[] filler_array = list.toArray();

以这种方式添加新元素要容易得多。

TL;DR - 重新填充效率低下。避免这样做。

将填充数组移出 class 并为每个数组创建一个单独的变量。例如:

private static final int[] filler_array = {
    0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03,
    0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
private static final int[] filler_array2 = {
    0xF4, 0x26, 0x58, 0x8A, 0xBC, 0xEE, 0x20, 0x52, 0x84, 0xB6, 0xE8,
    0xF4, 0xC2, 0x90, 0x5E, 0x2C, 0xFA, 0xC8, 0x96, 0x64, 0x32, 0x00};

public void fillArrays(){
    System.arraycopy(filler_array, 0, spikeWaveB1, 0, 22);
    System.arraycopy(filler_array2, 0, spikeWaveB2, 0, 22);
    // etcetera
}

推理:如果在fillArrays里面初始化了filler_array,那么每次调用该方法都会执行初始化代码。 (您使用的数组初始值设定项很可能会在幕后执行复制。)

通过使用在 class(或实例)级别声明的变量,初始化在 class 初始化时间(或实例初始化时间)发生一次。

此外,考虑到您使用 filler_array(作为副本的来源)的方式,您通过在其上复制数据几乎没有取得任何成就。