我将如何复制一个数组说
float arraytobecopied[] = {1.20,2.50,3.60};
到另一个已经有数据的数组
float newarray[] = {5.20,6.30,4.20};
我想将 the 添加arraytobecopied
到新数组的末尾并将值保留在数组中。还作为旁注,这将是一个正在进行的过程,每次都添加到数组的末尾。
我应该只使用for
循环吗?或者,还有更好的方法。(不能使用数组)已经试过了:(
这个问题以前在这里问过,您可以查看此页面以获取答案。如何在 Java 中连接两个数组?
利用System.arraycopy
public static void arraycopy(Object src,
int srcPos,
Object dest,
int destPos,
int length)
您不能增加原始数组的大小。但是您可以创建一个新数组,将两个源数组复制到其中,并将您的引用变量分配给它。
例如,这是一个简单实现的草图。(另一种方法是使用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()
方法可以在需要时轻松地将列表转换为数组。
从编程的角度来看,最简单的方法是使用List<Float>
(如果您可以使用Float
值而不是float
)或第三方库,例如Apache Commons Collections或Trove,它们提供动态的原语数组。
如果您需要使用简单的原语数组(而不是包装类),您可以使用java.util.Arrays
和java.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;
)。
最简单的可以是:
List<Float> floats = new ArrayList(arraytobecopied);
floats.addAll(newarray);
arraytobecopied = floats.toArray(new float[0]);
如果您根本不想使用 java.Util 中的任何内容。
如何编写一种使用 src 数组更新目标数组的方法。现在,当您复制元素时,请确保目标数组中的大小足够。否则,当您创建一个新数组时,使用双倍大小创建它并复制元素,这可能有助于避免每次创建新数组并在调整大小后进行迭代以再次填充完整数组。
有点类似于数组列表如何在其中维护数组的大小。