所以我有一個名爲「SNode
s」的節點陣列(它們是我自己創建的一個類,它們實際上只是一個基本節點,它包含一個字符串和一個指向下一個節點的指針)。如何使用變量創建對我的對象的引用?
我有一個方法叫做insertValue()
,它接受你想要放入一個值的索引和你想要SNode
包含的字符串。但是,如果通過的索引已包含SNode
,我希望新值成爲SNode
的「下一個」節點(實質上是在每個索引空間中創建一個鏈接的節點列表)。
private int insertValue(int arrayPos, String element){//Checks for collisions with another SNode, and inserts the SNode into the apppropriate spot in the array
SNode targetNode = array[arrayPos];//What I want to be a reference to the node at the desired position in the array
while (targetNode != null){//If an SNode already exists in that position, keeps iterating down until it gets to a non-existant SNode.
targetNode = targetNode.getNext();//getNext is a method in my SNode that just returns a reference to that SNode's "nextNode" variable.
}
targetNode = new SNode(element);
return arrayPos;
}//end insertValue
我的問題是我運行此方法後,它不會創建所需的排列位置的新節點,甚至當陣列點爲空第一次運行。
如果我改變targetNode = new SNode(element);
到array[arrayPos] = new SNode(element);
這顯然插入SNode
入陣就好了,這樣使我相信所發生的事情是新SNode
正處於變量targetNode
創建的,但targetNode
沒有鏈接到實例化後的數組位置。我假設它基本上是將數據從第2行的數組位置複製到變量中,但隨後變成了它自己的獨立實體。
那麼我怎麼有targetNode
實際參考和影響SNode
? (當我重複上下貫通的節點在已經佔據陣列空間鏈表這樣的方式,targetNode指向正確的)
注:爲了簡單起見,我已經離開了在SNode
中使用setNext()
方法的行將鏈接列表中的前一個節點鏈接到其下一個節點。
啊哈!好吧,所以*初始*時間我需要一個'if'語句來檢查數組索引是否爲空。如果是這樣,我需要直接編輯數組索引來添加新的SNode.但在此之後,我可以使用'targetNode'指向它後面的鏈表對象,並且它將正常工作。謝謝,這完全解決了我的問題! – Guy