[英]Java Stack Linked list
我用以下代碼行聲明了一個對象節點隊列:
Queue<Node> queue;
queue = new LinkedList<Node>();
但是,當我聲明Node對象的堆棧時,通過將Queue替換為堆棧,它不起作用。 為什么會這樣呢? 還有,到底是什么
queue = new LinkedList<Node>();
意思? 這是否意味着正在創建Node對象的鏈接列表,並且該列表可以在Queue中?
我正在使用開放式課件來學習有關數據結構和算法的知識,並且我是一個初學者。 謝謝!
在Java中,由於遺留原因, Stack
是一個類,而不是一個接口。 因此,不能將LinkedList
分配給Stack
類型的變量。
Deque
接口聲明了LIFO操作(盡管它也聲明了FIFO操作),而LinkedList
實現了Deque
。
當你做
queue = new LinkedList<Node>();
您正在創建一個LinkedList
但通過Queue
類型引用了它,以便僅公開FIFO操作。 這樣可以確保稍后通過僅更改上面的行來交換Queue
其他實現。
Queue<Node> queue
表示變量隊列的類型為“節點隊列”。 Queue
是接口而不是類。
Java的LinkedList類實現了Queue接口,因此queue = new LinkedList<Node>();
完全可以。
Java Stack是一個不實現Queue接口的實際類,因此您不能僅將其替換。
這是因為java.util.LinkedList實現了java.util.Queue,但盡管具有push和pop方法,但它不是java.util.Stack。 堆棧是一個遺留類,不建議使用它,但是如果您仍然想使用它,這就是方法
Stack<Node> stack = new Stack<Node>();
這是否意味着正在創建Node對象的鏈接列表,並且該列表可以在Queue中?
不,這意味着用於隊列的基礎數據結構是LinkedList,並且您可以添加Node
類型的對象
如果您不熟悉此構造,則應該閱讀泛型LinkedList<Node>()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.