我怎么能做一个重新调整大小的数组?

时间:2015-02-28 21:17:44

标签: java arrays

现在我知道数组是固定的,它们的长度不能改变。但是我必须以某种方式使用数组,当第一个数组被填充时,我创建一个双倍长度的新数组,并将旧数组中的值复制到新数组中。我必须无限次地工作。此外,我不能在集合界面下使用数组列表或任何东西。

2 个答案:

答案 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);
    }
}