java - 我的数组中的链接列表不起作用

标签 java linked-list

我正在尝试创建一个程序来将单词存储在数组中。我有一个计算整数值的 hashFunction。如果数组中的该位置为空,则使用该值将单词放入节点中。如果那里已经有一个 Cell,它应该创建一个以单词作为其数据类型的新 Cell,然后它应该指向具有所有其他数据的旧 Cell。然而,这似乎不起作用 - 我添加了一些单词,虽然它将第一个单词添加到单元格中,但其他单词没有添加。我不确定为什么会发生这种情况 - 有人可以告诉我为什么吗?

public class test2{

    public static class Node<T>{
        public T data;
        public Node<T> next;

    public Node(T data, Node<T> next)
    {
       this.data = data;
       this.next = next;
    }
 }



    static Node[] array = new Node[10]; 

    public static void add(String word){
        int position = hashFunction(word);
        if(array[position] == null){
            array[position] = new Node(word, null);
        }else{
            new Node(word, array[position]);
        }
    }

    public static int hashFunction(String a){
        int sum = 1;
        for(int i = 0; i<a.length(); i++){
            char b = a.charAt(i);
            int value = (int) b;
            sum *= value;
        }
     return sum % array.length;
 }

 public static void main(String[] args) {
     add("abc");
     add("acb");
     add("bca");
     add("bac");
     add("cba");
     System.out.println(array[4].next);
 }
}

最佳答案

而不是

new Node(word, array[position])

您应该执行以下操作:

array[position] = new Node(word, array[position]);

使用原始代码行,您可以正确创建 Node 的新实例,并将当前的 array[position] 指定为其 next值。

但是array[position]还是一样,需要将其更改为新创建的Node实例。

关于java - 我的数组中的链接列表不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47680570/

相关文章:

java - 使用 Java 的 Auth0 JWT

java - Checkstyle 用于检查某个类是否仅在某个包或子包内使用

java - 多模块 Gradle 构建问题 - 找不到与给定名称匹配的资源

java - 找出与 web 服务器生成的 html 页面关联的类文件

c - 尝试显示列表时读取访问冲突 (0xCCCCCCD0)

java - 为什么在这个树遍历中只有 log(N) 次递归调用?

c - LinkedList在C中删除结束

java - 在 applicationContext.xml 中添加 bean 'sessionFactory' 后出错

c - 链表内存问题

python - 引用列表而不是节点