1:Stack簡單介紹
Stack是棧。它的特性是:先進后出(FILO, First In Last Out)。
Stack類表示后進先出(LIFO)的對象堆棧。它通過五個操作對類Vector進行了擴展 ,允許將向量視為堆棧。它提供了通常的push和pop操作,以及取堆棧頂點的peek方法、測試堆棧是否為空的empty方法、在堆棧中查找項并確定到堆棧頂距離的search方法。
java中關于Stack的實現其實非常的不妥當為什么?
首先因為棧的實現繼承了Vector,目的是為了復用方法,但是Vector的實現是基于數組的實現,而棧的使用場景大多是出棧入棧等插入或者刪除元素的操作,從設計上來講棧就不是用來做數據查詢之用,從底層數據結構的層面來說鏈表的方式更適合用來實現棧。
既然是棧(棧只能在棧頂添加或刪除元素),復用這種在指定位置添加元素的方法的意義何在?
所以Stack的實現是值得質疑的一件事情,如果我們要用棧的數據結構,可以選擇用LinkedList來實現,或者用Deque也可以,效率高,接口設計也比較的完美
看一下Stack的集成關系