这是我正在尝试做的事情以及我遇到的问题:我想“伪造”通往动态数组的方式。这意味着,使用普通的数组结构,只要它满了,我就会创建一个比旧数组大 25% 的新数组,然后将旧数组的元素复制到新数组中。
// Whenever my original nodes array is full
Node aNew[];
aNew = new Node[newDesiredSize];
//I create every new element in the new array for this to be a deep copy
for (int i=0; i<numVert; i++){
aNew[i] = new Node(nodes[i].getId());
}
nodes = aNew;
但这似乎不起作用,因为当我尝试填充和访问新创建的数组时,出现NullPointerException
错误。
我一直在与这种伪造动态数组的方法作斗争,但我显然遗漏了一些东西。
ArrayList
不允许使用或任何其他形式的真正动态结构。
/ * ** /
编辑:根据建议,我改变了
aNew[i] = new Node(nodes[i].getId());
至
aNew[i] = nodes[i];
但这似乎并不能解决问题。
我还检查了所有 i 的空位置,结果证明我有。该程序似乎正在“失去”整个新成长的部分。
/ * /
解决了!这是在增长时添加新元素的问题。现在一切都好。谢谢你的帮助。将发布更多信息以供将来参考。