6

我将如何复制一个数组说

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

到另一个已经有数据的数组

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

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

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

4

5 回答 5

10

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

利用System.arraycopy

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

于 2013-06-11T04:18:08.280 回答
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

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

于 2013-06-11T04:18:15.010 回答
2

从编程的角度来看,最简单的方法是使用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;)。

于 2013-06-11T04:43:41.520 回答
1

最简单的可以是:

List<Float> floats = new ArrayList(arraytobecopied);
floats.addAll(newarray);
arraytobecopied = floats.toArray(new float[0]);
于 2013-06-11T04:19:24.283 回答
0

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

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

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

于 2013-06-11T04:48:00.397 回答