如何将一个已经带有数据的数组复制到另一个数组中?

6

如何复制一个数组?

float arraytobecopied[] = {1.20,2.50,3.60};

将数据复制到已有数据的另一个数组中:

float newarray[] = {5.20,6.30,4.20};

我想将arraytobecopied添加到新数组的末尾,同时保留数组中的值。另外需要注意的是,这将是一个持续的过程,每次都会将元素添加到数组的末尾。
我应该使用for循环吗?还是有更好的方法。(不能使用Array)已经尝试过了 :(

5
回答你的问题,如何合并两个数组,最好的方法是使用ApacheCommons ArrayUtils.addAll。但是,由于你问是否有更好的方法,我建议使用ArrayList<Float>,因为当需要时,你可以不断地添加值到它里面。 - Kyle
谢谢你提供的信息,但我不能使用Array<list>,我已经尝试过了,对我的需求不起作用。 - Dakota Miller
5个回答

12

这个问题之前已经在这里问过了,你可以查看这个页面获取答案。 Java中如何连接两个数组?

使用System.arraycopy

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)


4
假设目标数组足够长,能够容纳来自两个数组的所有值。 - Ted Hopp

5

您无法增加原始数组的大小。但是您可以创建一个新数组,将两个源数组都复制到其中,并将引用变量分配给它。

例如,这是一个简单实现的草图。(另一种选择是使用System.arraycopy()。)

 float[] newerArray = new float[ newarray.length + arraytobecopied.length ];
 for ( int i = 0; i < newarray.length; ++i ) {
     newerArray[i] = newarray[i];
 }
 for ( int i = 0; i < arraytobecopied.length; ++i ) {
     newerArray[ newarray.length + i ] = arraytobecopied[i];
 }
 newarray = newerArray; // Point the reference at the new array

或者,您可以使用java.util.ArrayList,它会自动处理内部数组的增长。其toArray()方法使得在需要时将列表转换为数组变得很容易。


3
从编程角度来看,最简单的方法是使用 List<Float>(如果可以使用 Float 值而不是 float),或者使用第三方库,例如提供基本数据类型的动态数组的 Apache Commons CollectionsTrove

如果您需要使用一个简单的基本数据类型数组(而不是包装类),您可以使用 java.util.Arraysjava.lang.System 类中的一些方法来帮助您:

int len1 = newarray.length;
int len2 = arraytobecopied.length;
float[] result = Arrays.copyOf(newarray, len1 + len2);
System.arraycopy(arraytobecopied, 0, result, len1, len2);
// result now contains the concatenation of newarray and arraytobecopied

请注意,您无法更改数组对象的长度;您只能将变量重新分配给一个新数组(例如,newarray = result;)。

1
最简单的方法可能是:

List<Float> floats = new ArrayList(arraytobecopied);
floats.addAll(newarray);
arraytobecopied = floats.toArray(new float[0]);

列表不接受原始类型。List<Float> floats = new ArrayList<Float>(); - UdayKiran Pulipati
我将其从float更正为Float。我们可以有Float的列表。 - Marcelo Dias

0

如果您完全不想使用java.Util中的任何内容。

那么,编写一个方法来使用src数组更新目标数组。现在,当您复制元素时,请确保目标数组中有足够的空间。否则,当您创建一个新数组时,请将其创建为双倍大小并复制元素,这可能有助于避免每次创建新数组并进行迭代以重新填充完整数组。

有点类似于数组列表如何维护其中的数组大小。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接