我正在尝试创建一个程序来将单词存储在数组中。我有一个计算整数值的 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/