【发布时间】:2013-11-15 14:20:48
【问题描述】:
我有一点问题:
private void resize(int i) {
this.capacity +=i; // new capacity
this.memoryaux = new Integer[this.capacity]; // create array aux with new capacity
for (int a = 0; a < this.capacity; a++)
this.memoryaux[a] = null; // initialize null
this.memory = this.memoryaux; // copy array aux into my array
}
我想调整数组内存的大小,例如容量为 2。但它已经在里面了,所以我试图用新容量创建一个新数组 (memoryaux),然后复制旧中新。
我的问题是我丢失了旧数组中的所有内容,如何在不丢失内部所有内容的情况下做到这一点?一个例子是这样的:
容量为 2 的旧数组有 [0]1 [1]2。
创建更大容量为 4 的新数组。
然后改变旧数组的容量,完成如下: [0]1 [1]2 [2]null [3]null
【问题讨论】:
-
为什么不使用ArrayList?
-
这不是内存而是数组大小。很多关于这个的现有问题和答案。 stackoverflow.com/questions/7313628/resizing-an-array
-
去看看ArrayList源文件,看看方法
ensureCapacity,你可以找到一些想法 -
可以去掉Eclipse标签吗?