下面是我正在做的和我遇到的問題:我想「假」到動態數組的方式。這意味着,使用正常的數組結構,並且每當它滿時,我會創建一個比舊數組大25%的新數組,然後將舊數組的元素複製到新數組中。在Java中使用數組結構的假動態數組
// 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]對於某些我是否爲空 – gefei
ArrayList實際上是用相同的想法實現的(但擴展因子不同)。 – nhahtdh
@gefei:是的,我有空,我的範圍是我沒有的。我認爲這是與深層或淺層複製有關的事情,但我不確定。 – MelecioPonte