0
我正在創建一個使用我自己的LinkedList
類來處理碰撞的鏈式哈希表。這裏是我的問題發生的地方:我從一列LinkedLists開始,我的「哈希表」,實際上設置爲null。當我希望添加一個單詞時,如果所需的位置爲空,我將創建一個新的LinkedList
,將它放入該數組索引中。然後我創建一個新的LinkedListNode
並將新LinkedList的頭部設置爲新節點。2個不同鏈表的頭部變爲相同的值
我的問題是發生在這裏:每當我把我的新LinkedList
到我的新LinkedListNode
所有我以前創建linkedlists也有他們的頭的頭更改爲新的節點。
我的調試器顯示我每次都真正創建新的鏈表。我擔心每個數組索引只是指向一個數組,但這顯然不是問題。下面是所有相關的代碼
public class SetOfStrings {
private int arraySize;
private LinkedList[] mainArray;
private int totalCount;
//other methods here
public boolean add(String toAdd)
{
int hashToAdd = hash(toAdd);
int wasFound = contains(toAdd);
if(wasFound> 0)
{
return false; // means its already in the table
}
if(mainArray[hashToAdd]== null)
{
mainArray[hashToAdd] = new LinkedList();
ListNode newHead = new ListNode(toAdd);
mainArray[hashToAdd].setHead(newHead);
totalCount++;
return true;
}
ListNode currentHead = mainArray[hashToAdd].getHead();
ListNode newNode = new ListNode(toAdd);
newNode.setNext(currentHead);
mainArray[hashToAdd].setHead(newNode);
totalCount++;
return true;
}
public class LinkedList {
private static ListNode head;
private static int count;
private static ListNode currentPosition;
// other methods here
public void setHead(ListNode newNode)
{ head = newNode;}
摘要:每當我一個鏈表的頭設置爲一個新的節點,它改變了我所有的鏈表的頭指向同一個新節點
就是這樣!當它如此簡單時,就得愛。非常感謝 – art3m1sm00n