如何复制一个数组?
float arraytobecopied[] = {1.20,2.50,3.60};
将数据复制到已有数据的另一个数组中:
float newarray[] = {5.20,6.30,4.20};
我想将
arraytobecopied
添加到新数组的末尾,同时保留数组中的值。另外需要注意的是,这将是一个持续的过程,每次都会将元素添加到数组的末尾。我应该使用
for
循环吗?还是有更好的方法。(不能使用Array)已经尝试过了 :(这个问题之前已经在这里问过了,你可以查看这个页面获取答案。 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
或者,您可以使用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]);
List<Float> floats = new ArrayList<Float>();
- UdayKiran Pulipati如果您完全不想使用java.Util中的任何内容。
那么,编写一个方法来使用src数组更新目标数组。现在,当您复制元素时,请确保目标数组中有足够的空间。否则,当您创建一个新数组时,请将其创建为双倍大小并复制元素,这可能有助于避免每次创建新数组并进行迭代以重新填充完整数组。
有点类似于数组列表如何维护其中的数组大小。
ArrayUtils.addAll
。但是,由于你问是否有更好的方法,我建议使用ArrayList<Float>
,因为当需要时,你可以不断地添加值到它里面。 - Kyle