我有一个类 - xClass,我想将其加载到 xClass 数组中,所以我声明:
xClass mysclass[] = new xClass[10];
myclass[0] = new xClass();
myclass[9] = new xClass();
但是,我不知道我是否需要 10 个。我可能需要 8 个或 12 个或任何其他数字。直到运行时我才知道。我可以即时更改数组中元素的数量吗?如果是这样,如何?
原文由 Paul 发布,翻译遵循 CC BY-SA 4.0 许可协议
不,您不能在创建数组后更改其大小。您要么必须分配比您认为需要的更大的空间,要么接受必须重新分配它以增加大小的开销。当它发生时,你必须分配一个新的并将数据从旧的复制到新的:
如果您遇到这种情况,我强烈建议您改用 Java Collections。特别是
ArrayList
本质上包装了一个数组并负责根据需要增加数组的逻辑:通常,出于多种原因,
ArrayList
是数组的首选解决方案。一方面,数组是可变的。如果你有一个类这样做:您已经创建了一个问题,因为调用者可以更改您的私有数据成员,这会导致各种防御性复制。将此与列表版本进行比较: