You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么Java数组不使用Arrays.copyOf无法正常扩容?

问题原因
  • 你手动创建两倍容量的新数组后,没有将类成员变量this.theData指向这个新数组,操作结束后this.theData仍然指向原来的小容量旧数组,所以扩容操作完全没有生效。
  • 你没有同步更新this.capacity的数值为原来的两倍,后续判断数组剩余容量、计算插入位置的逻辑依然会基于旧的容量值运行,进而出现元素覆盖的异常。

你遇到的「第一个索引内容被新值替换」的问题,本质就是扩容未生效,旧数组已经处于满容状态,后续插入新元素时触发了错误的覆盖逻辑。

修正方案

补全给theData赋值新数组、更新容量的两步即可,完整代码如下:

double arrayResize[] = new double[this.capacity * 2];
for (int i = 0; i < this.theData.length; i++){
    arrayResize[i] = this.theData[i];
}
// 将原数组引用指向扩容后的新数组
this.theData = arrayResize;
// 更新容量为原来的两倍
this.capacity = this.capacity * 2;

内容的提问来源于stack exchange,提问作者Paige

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 08:06:04