现在我知道数组是固定的,它们的长度不能改变。但是我必须以某种方式使用数组,当第一个数组被填充时,我创建一个双倍长度的新数组,并将旧数组中的值复制到新数组中。我必须无限次地工作。此外,我不能在集合界面下使用数组列表或任何东西。
答案 0 :(得分:0)
您可以使用int []作为字段创建自己的数组类,例如:数字。 无论何时需要,您都可以增加尺寸:
int[] tmpArray = new int[size you need]
copy first to tmp
numbers = tmp;
这样,原始数组将被垃圾收集,并且该字段将具有一个具有所需容量的新数组。
他们复制,您可以使用您的偏好方法,从System类,Arrays甚至旧时尚循环
答案 1 :(得分:0)
正如您所说,数组无法调整大小。 您必须分配一个新数组并复制旧数组的内容。
例如,具有动态增长的数组存储的类可能会自行调整大小:
int[] arr = {1, 2, 3};
void ensureCapacity(int targetSize) {
if (arr.length < targetSize) {
arr = Arrays.copyOf(arr, targetSize);
}
}
如果您的Java版本没有Arrays.copyOf
,您可以使用System.arraycopy
以旧式方式执行此操作:
void ensureCapacity(int targetSize) {
if (arr.length < targetSize) {
int[] old = arr;
arr = new int[targetSize];
System.arraycopy(old, 0, arr, 0, old.length);
}
}