如何在Java中实现链接列表?

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)

谢谢!

Joe*_*oel 5

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)