重新填充一个java数组
问题描述:
我需要快速填充整个固定大小的数组。我的想法是这样的:重新填充一个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
答
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_array
的fillArrays
内,则初始化代码每次调用方法时执行。 (你正在使用的数组初始化器最有可能在后台执行拷贝。)
通过使用在类(或实例)级别声明的变量,在类初始化时(或实例初始化时)。
此外,考虑到您使用filler_array
(作为副本的来源)的方式,您通过将数据复制到其上几乎没有实现任何功能。
+0
感谢您深入解答Stephen,非常感谢。 – G3or6311
答
尝试使用ArrayList,然后在最后将其转换为数组。
List<Integer> list = new ArrayList<>();
.... // your inserts into the list here
int[] filler_array = list.toArray();
这样更容易添加新元素。
'filler_array = null'不会清空数组。 – bradimus
是否https://*.com/questions/80476/how-can-i-concatenate-two-arrays-in-java和/或https://*.com/questions/20316526/combine-two-integer- array-in-one-array-in-java提供任何帮助? – ZeldaZach
谢谢,我会进一步研究它... 恐怕不是,我不是想要将两个数组结合起来。我需要从[0]开始将一个新的值列表({x,y,z})放入已存在的数组中,然后删除现有的值 – G3or6311