nba*_*lle 2 java pointers linked-list
我试图在Java中实现一个简单的HashTable,它使用链接列表进行冲突解决,这在C中很容易做到,但我不知道如何用Java做,因为你不能使用指针.. .
首先,我知道这些结构已经用Java实现了,我不打算使用它,只是在这里训练......
所以我创建了一个元素,它是一个字符串和指向下一个Element的指针:
public class Element{
private String s;
private Element next;
public Element(String s){
this.s = s;
this.next = null;
}
public void setNext(Element e){
this.next = e;
}
public String getString(){
return this.s;
}
public Element getNext(){
return this.next;
}
@Override
public String toString() {
return "[" + s + "] => ";
}
}
Run Code Online (Sandbox Code Playgroud)
当然,我的HashTable有一个Element数组来存储数据:
public class CustomHashTable {
private Element[] data;
Run Code Online (Sandbox Code Playgroud)
这是我的问题:
例如,我想实现一个方法,在链接列表的末尾添加一个元素(我知道在列表的开头插入元素会更简单,更有效,但同样,这仅用于培训目的).没有指针我该怎么做?
这是我的代码(如果e是一个指针,它可以工作......):
public void add(String s){
int index = hash(s) % data.length;
System.out.println("Adding at index: " + index);
Element e = this.data[index];
while(e != null){
e = e.getNext();
}
e = new Element(s);
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
public void add(String s){
int index = hash(s) % data.length;
System.out.println("Adding at index: " + index);
Element curr = new Element(s);
Element e = this.data[index];
if (e == null) {
this.data[index] = curr;
return;
}
while(e.getNext() != null){
e = e.getNext();
}
e.setNext(curr);
}
Run Code Online (Sandbox Code Playgroud)