【问题标题】:Head of 2 different linked lists getting changed to same value2个不同链表的头被更改为相同的值
【发布时间】:2014-05-31 19:26:58
【问题描述】:

我正在创建一个链式哈希表,它使用我自己的LinkedListclass 来处理冲突。这是我的问题发生的地方:我从一个 LinkedLists 数组开始,我的“哈希表”最初设置为 null。当我想添加一个词时,如果所需的位置为空,我创建一个新的LinkedList,将它放在该数组索引中。然后我创建一个新的LinkedListNode 并将新 LinkedList 的头部设置为新节点。

我的问题出现在这里:每当我将新 LinkedList 的头部设置为新的 LinkedListNode 时,我之前创建的所有链表的头部也都更改为新节点。

我的调试器显示我每次都在真正地创建新的链表。我担心每个数组索引只是指向一个数组,但这显然不是问题。以下是所有相关代码

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 ListNode {

private String thisString;
private ListNode next;

public ListNode(String setString)
{
    thisString = setString;
    next = null;
}

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;}

摘要:每当我将链表的头设置为新节点时,它都会将所有链表的头更改为指向同一个新节点

【问题讨论】:

    标签: java linked-list hashtable chaining


    【解决方案1】:

    您将自己的头声明为static。这意味着它在LinkedList 类的所有实例之间共享。删除 static 关键字应该可以解决您描述的问题。

    【讨论】:

    • 就是这样!当它如此简单时,一定会爱上它。非常感谢
    猜你喜欢
    • 2022-01-22
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多