如何将数组复制到另一个已包含数据的数组中?

时间:2013-06-11 04:14:43

标签: java arrays

如何复制数组说

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

到另一个已包含数据的数组

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

我想将arraytobecopied添加到新数组的末尾,并将值保留在数组中。另外作为旁注,这将是一个正在进行的过程,每次都会添加到数组的末尾。

我应该只使用for循环吗?或者,还有更好的方法。 (不能使用Array)已经尝试过:(

5 个答案:

答案 0 :(得分:10)

此问题此前已在此处提出,您可以在此页面中找到答案。 How can I concatenate two arrays in Java?

使用System.arraycopy

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

答案 1 :(得分:6)

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

例如,这是一个简单实现的草图。 (另一种方法是使用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()方法可以在需要时将列表转换为数组。

答案 2 :(得分:2)

从编程角度来看,最简单的方法是使用List<Float>(如果您可以使用Float值而不是float)或第三方库,例如{{3} }或Apache Commons Collections提供动态基元数组。

如果需要使用简单的基元数组(而不是包装类),可以使用Trovejava.util.Arrays类中的几种方法来帮助:

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;)。

答案 3 :(得分:1)

最简单的可以是:

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

答案 4 :(得分:0)

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

如何编写一个使用src数组更新目标数组的方法。现在,当您复制元素时,请确保目标数组中的大小足够。否则,当您创建一个新数组时,使用double size创建它并复制元素,这可能有助于避免每次创建新数组并进行迭代以在调整大小后再次填充整个数组。

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