当前位置: 首页 > 面试题库 >

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

徐阳炎
2023-03-14
问题内容

我正在尝试用Java实现一个简单的HashTable,该哈希表使用链接表来解决冲突,这在C语言中很容易实现,但是我不知道如何在Java中实现它,因为您不能使用指针。

首先,我知道这些结构已经在Java中实现,我不打算使用它,只是在这里进行培训…

所以我创建了一个元素,它是一个字符串和一个指向下一个元素的指针:

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 + "] => ";
        }
    }

当然,我的HashTable有一个Element数组来存储数据:

public class CustomHashTable {
    private Element[] data;

这是我的问题:

例如,我想实现一种在链接列表的末尾添加元素的方法(我知道将元素插入列表的开头会更简单,更有效,但这同样仅用于培训目的)。没有指针我该怎么办?

这是我的代码(如果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);
    }

谢谢!


问题答案:

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



 类似资料:
  • 问题内容: 我想在Java中实现方法链接。 我该如何实现? 还请告诉我何时使用它。 我想创建可以按如下方式使用的方法链接: 或喜欢 或喜欢 问题答案: 让你的方法返回如下: 这样,每次调用其中一个方法后,你将获得返回的同一对象,以便可以调用另一个方法。 当你要在对象上调用一系列方法时,此技术很有用:它减少了实现该方法所需的代码量,并允许你在方法链之后使用单个返回值。 减少显示对话框所需的代码量的一

  • 如何使用下载链接实现AntiForgeryToken: 我试图创建一个ajax请求,但无法下载文件,控制器中的操作如下所示: 有什么想法吗?

  • 问题内容: 我在网上阅读,可以通过将派生对象声明为瞬时对象来省略它们的序列化。但是,在链接列表的情况下,链接是对象之间的内存引用。那么,我应该将其转换为数组并存储数组表示形式吗? 问题答案: 这是Java序列化的方式:它获取所有元素并将它们与大小一起写入。当然要声明条目 请参阅的和方法:

  • 问题内容: 如何创建实现此接口的Clojure对象,然后从Java代码调用它? 问题答案: 是实现接口的首选- 重型,较旧且较慢,因此应尽可能避免。一个实现看起来像:

  • 问题内容: 考虑下面的类 问题在于上面的方法太长并且有很多 语句。我想到了一些重构,但是仍然不确定该怎么做。我在考虑类似连锁模式的东西。然后,我将实现几个检查器类,这些检查器类调用链中的下一个检查器,或者返回相应的。 但是后来我有了一个更好的主意(至少我是这样认为的):为什么表现得不像Java 8?我想用类似的- - -pattern。但是我不知道如何实现这一点。我在想类似的东西: 这个想法是:当

  • 问题内容: 用Java创建链接列表的最佳方法是什么? 问题答案: 对于熟悉Java的开发人员来说,显而易见的解决方案是使用java.util中已经提供的LinkedList类。说,但是,由于某种原因,你想进行自己的实现。这是一个链接列表的快速示例,该链接列表在列表的开头插入新链接,从列表的开头删除并循环浏览列表以打印其中包含的链接。对此实现的增强包括使其成为双向链接列表,添加从中间或结尾插入和删除