java自动加倍数组大小

时间:2012-10-15 16:58:34

标签: java arrays double capacity

尝试将数组初始化为1,并在每次输入填充时将其加倍。这就是我现在所拥有的

int max = 1;
 PhoneRecord[] records = new PhoneRecord[max];
      int numRecords = 0;
      int size = Integer.parseInt(length.records[numRecords]);
 if (size >= max) {
   size = 2*size;
 }

但显然已经失败了。任何建议或指导都会很棒,谢谢。

3 个答案:

答案 0 :(得分:1)

为什么不使用ArrayList?它会自动显示非常相似的特征。

来自the private grow() method

int newCapacity = oldCapacity + (oldCapacity >> 1);

您无法覆盖增长行为,但除非您确实因应用程序特征而需要加倍,否则我确信这样就足够了。

答案 1 :(得分:1)

好的,你应该使用ArrayList,但其他几个人已经告诉过你了。

如果您仍想使用数组,请按以下步骤调整大小:

int max = 1;
PhoneRecord[] records = new PhoneRecord[max];
int numRecords = 0;

void addRecord(PhoneRecord rec) {
    records[numRecords++] = rec;
    if(numRecords == max) {
        /* out of space, double the array size */
        max *= 2;
        records = Arrays.copyOf(records, max);
    }
}

答案 2 :(得分:1)

大小只是大小数倍,而不是数组大小的两倍。 尝试:

            records = Arrays.copyOf(records, records.length*2);