队列通常以FIFO(先进先出)方式对元素进行排序,而堆叠采用LIFO(后进先出)方式。
在Java标准库中,有一个名为Queue
的特定接口,用于建模队列和一堆实现它的类。
虽然有类实现堆栈,例如Stack
(扩展Vector
),ArrayDeque
(如JavaDoc中所述,“很可能是当用作堆栈“)和Stack
(使用其LinkedList
和push
方法)时,pop
的速度快于{{1}},堆栈集类型没有特定的接口。
为什么Java标准库中没有堆栈集合类型的接口?
答案 0 :(得分:5)
请参阅java.util.Deque
接口API
Deques也可以用作LIFO(后进先出)堆栈。应优先使用此接口,而不是传统的Stack类。当deque用作堆栈时,元素将从双端队列的开头推出并弹出。
Deque有push,pop和peek方法
答案 1 :(得分:1)
java中接口的设计意味着实现接口的每个类都声明它。
您可以为许多角色设想许多界面,但每次都无法设计界面,或者您的代码开始变得非常冗长。
因此必须做出选择。设计一个LIFO接口并让LIFO类声明它显然不是那么重要。