队列使用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
这样的行为Queue
那么您的LinkedList
必须扩展/实现Queue
类/接口。 请记住,超类可以是子类的对象引用实例,而不是反之类。
public class LinkedList implements Queue { class Node { T data; Node next; } //all your behavior here }
此外,正如Java文档所述, Queue
是一个接口, LinkedList
实现了它。
注意:如果要使用LinkedList实现队列,则应该看到@Tudor发布的代码示例。
你的代码中有两个错误:
-
你们都在实现
LinkedList
(你的意思是扩展吗?)并通过在你的类中使用LinkedList
来使用组合。 -
这段代码不起作用:
Queue
因为根据第1点,aQueue = new LinkedList (); 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方法….不需要额外的代码