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