在 Java 中使用链表实现的队列



我很快用Java写了一个链表类。我想编写另一个使用链表的队列类。我将如何在 Java 中实现这一点?我不完全理解实现/扩展关键字...这是我的队列的样子(例如):

public class Queue<T> implements LinkedList
{
    protected LinkedList<T> list;
    public Queue() {
        list = new LinkedList<T>();
    }
    public void add( T element) {
        list.add( element);
    }
    public T removeLast() {
        return list.removeLast();
    }   
}

另请注意,链表类也是泛型的。我知道已经有内置的类来实现此功能,但我想学习(这就是我尝试手动执行此操作的原因)

编辑:此外,最后,我希望能够说这样的话:

Queue<String> aQueue = new LinkedList<String>();
如果你

想要像Queue<String> aQueue = new LinkedList<String>();这样的行为,那么你的LinkedList必须扩展/实现Queue类/接口。请记住,超类可以是子类的对象引用实例,反之亦然。

public class LinkedList<T> implements Queue<T> {
    class Node<T> {
        T data;
        Node<T> next;
    }
    //all your behavior here
}

此外,正如 Java 文档所述,Queue是一个接口,LinkedList实现它。

注意:如果要使用 LinkedList 实现队列,您应该会看到 @Tudor 发布的代码示例。

代码中的两个错误:

  1. 你们都在实现LinkedList(你的意思是扩展吗?)并通过在类中设置一个LinkedList来使用组合。

  2. 这段代码将不起作用:Queue<String> aQueue = new LinkedList<String>();因为根据第 1 点,Queue要么是 LinkedList 的子类,要么包含一个 LinkedList ,这使您的代码不正确。

事实上,最后一个代码片段几乎没有意义。我假设您要做的是创建一个内部使用链表的Queue。在这种情况下,只需使用:

public class Queue<T>
{
    protected LinkedList<T> list;
    public Queue() {
        list = new LinkedList<T>();
    }
    public void add( T element) {
        list.add( element);
    }
    public T removeLast() {
        return list.removeLast();
    }   
}

然后:

Queue<String> queue = new Queue<String>();

由于 Linkedlist 实现了队列接口,我们可以直接使用轮询、窥视方法。无需额外代码

相关内容

  • 没有找到相关文章

最新更新