2014-04-16 26 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

相关问题