队列使用Java中的链表实现

我很快用Java编写了一个链表类。 我想编写另一个使用链表的队列类。 我如何用Java实现这一目标? 我不完全理解implements / extends关键字……这就是我的队列的样子(例如):

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

另请注意,链表类也是通用的。 我知道已经内置了类来实现这个function,但是我想学习(这就是为什么我要手动执行此操作)

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

 Queue aQueue = new LinkedList(); 

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

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

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

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

你的代码中有两个错误:

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

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

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

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

然后:

 Queue queue = new Queue(); 

由于Linkedlist实现了队列接口,我们可以直接使用poll,peek方法….不需要额外的代码