2014-04-16 31 views
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;} 

摘要:每當我一個鏈表的頭設置爲一個新的節點,它改變了我所有的鏈表的頭指向同一個新節點

回答

0

您正在宣佈您的頭爲static。這意味着它在LinkedList類的所有實例之間共享。刪除static關鍵字可以解決您描述的問題。

+0

就是這樣!當它如此簡單時,就得愛。非常感謝 – art3m1sm00n

相關問題