我正在尝试编写一个名为reallocate的方法,它接受一个名为theDirectory的数组,并将其内容复制到一个名为newDirectory的新数组中,该数组的容量是其两倍。然后theDirectory设置为newDirectory。
这是我到目前为止所做的,但是我仍然坚持如何将内容复制到newDirectory,所以任何帮助都会非常感激。
private void reallocate()
{
capacity = capacity * 2;
DirectoryEntry[] newDirectory = new DirectoryEntry[capacity];
//copy contents of theDirectory to newDirectory
theDirectory = newDirectory;
}
提前致谢。
答案 0 :(得分:2)
您可以使用System.arrayCopy
。
API here。
目标数组具有双倍容量的简单示例:
int[] first = {1,2,3};
int[] second = {4,5,6,0,0,0};
System.arraycopy(first, 0, second, first.length, first.length);
System.out.println(Arrays.toString(second));
<强>输出强>
[4, 5, 6, 1, 2, 3]
答案 1 :(得分:1)
遍历旧数组的元素,并将每个元素分配给新数组中的相应位置。
答案 2 :(得分:1)
使用System.arraycopy (theDirectory, 0, newDirectory, 0, theDirectory.length)
。
答案 3 :(得分:1)
看一下System.arraycopy():)
http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#arraycopy(java.lang.Object,int,java.lang.Object,int,int)
应该是
之类的东西System.arraycopy(oldArray, 0, newArray, 0, oldArray.size);
答案 4 :(得分:0)
检查java.util.Arrays.copyOf()。这就是你想要的:
theDirectory = Arrays.copyOf(theDirectory, theDirectory.length * 2);