2017-06-21 96 views
-2

我需要快速填充整個固定大小的數組。我的想法是這樣的:重新填充一個java數組

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}已經填充陣列的方式。 如何用新的值列表重新填充它?

任何幫助非常感謝。 Regards, George

+3

'filler_array = null'不會清空數組。 – bradimus

+0

是否https://stackoverflow.com/questions/80476/how-can-i-concatenate-two-arrays-in-java和/或https://stackoverflow.com/questions/20316526/combine-two-integer- array-in-one-array-in-java提供任何幫助? – ZeldaZach

+0

謝謝,我會進一步研究它... 恐怕不是,我不是想要將兩個數組結合起來。我需要從[0]開始將一個新的值列表({x,y,z})放入已存在的數組中,然後刪除現有的值 – G3or6311

回答

2

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

將填充陣列移出類併爲每個填充單獨創建一個變量。例如:

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 
} 

推理:如果初始化filler_arrayfillArrays內,則初始化代碼每次調用方法時執行。 (你正在使用的數組初始化器最有可能在後臺執行拷貝。)

通過使用在類(或實例)級別聲明的變量,在類初始化時(或實例初始化時)。

此外,考慮到您使用filler_array(作爲副本的來源)的方式,您通過將數據複製到其上幾乎沒有實現任何功能。

+0

感謝您深入解答Stephen,非常感謝。 – G3or6311

0

嘗試使用ArrayList,然後在最後將其轉換爲數組。

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

這樣更容易添加新元素。