java.util.Stack動態(tài)數(shù)組棧源碼(jdk1.7)

準(zhǔn)備知識

Stack類采用的是動態(tài)數(shù)組棧實現(xiàn)的聚谁,規(guī)則后進(jìn)先出,從棧頂壓入元素茁帽、從棧頂彈出元素董饰。棧實際上是一種添加了后進(jìn)先出規(guī)則的順序表。Stack類是在Vector類的基礎(chǔ)上進(jìn)行繼承并擴展功能倦淀。
http://www.reibang.com/p/532a6e161112

所屬包

package java.util;

繼承與實現(xiàn)關(guān)系

public  
class Stack<E> extends Vector<E>

構(gòu)造方法

    /**  
     * 創(chuàng)建一個棧的空構(gòu)造方法  
     */  
    public Stack() {  
    }  

方法

push方法蒋畜,將元素壓入棧

    /**  
     * 將元素item壓入棧中  
     */  
    public E push(E item) {  
        addElement(item);  
  
        return item;  
    }  
      
    public synchronized void addElement(E obj) {  
        modCount++;  
        //進(jìn)行擴容操作  
        /**    
            * 增加此向量的容量(如有必要),以確保其至少能夠保存最小容量參數(shù)指定的組件數(shù)撞叽。    
            * 如果當(dāng)前數(shù)組的容量小于minCapacity姻成,那么就增加容量,增加數(shù)組長度    
            * 新數(shù)組的長度等于原數(shù)組的長度加上增量capacityIncrement愿棋。    
            * 如果增加capacityIncrement小于等于0科展,那么就自動擴增為原來二倍。    
            * 如果擴增為原來的二倍還是比minCapacity小糠雨,那么就將minCapacity作為Object數(shù)組的長度才睹。    
               */   
        ensureCapacityHelper(elementCount + 1);  
        //在棧頂插入元素  
        elementData[elementCount++] = obj;  
    }  

pop方法,從棧頂彈出元素甘邀,并且在棧中將該元素刪除

   /**  
    * 從棧頂彈出元素  
    */  
   public synchronized E pop() {  
       E       obj;  
       int     len = size();  
    //獲取棧頂元素琅攘,但是不彈出元素  
       obj = peek();  
    //刪除該棧頂元素  
       removeElementAt(len - 1);  
  
       return obj;  
   }  

peek方法,從棧中取出元素值松邪,但是不刪除棧中的值

   /**  
    * 獲取下標(biāo)為數(shù)組長度減一也就是最后的值乎澄,也符合棧的規(guī)則,從棧頂彈出元素  
    */  
   public synchronized E peek() {  
       int     len = size();  
      
       if (len == 0)  
           throw new EmptyStackException();  
       return elementAt(len - 1);  
   }  
   
  public synchronized E elementAt(int index) {  
          if (index >= elementCount) {  
               throw new ArrayIndexOutOfBoundsException(index + " >= " + elementCount);  
          }  
  
          return elementData(index);  
       }  
  
       //通過索引來獲取數(shù)組中對應(yīng)的值  
E elementData(int index) {  
       return (E) elementData[index];  
   }  

閱讀總結(jié)

(1)Stack動態(tài)棧是線程安全的测摔。
(2)Stack是基于Vector動態(tài)數(shù)組結(jié)構(gòu)實現(xiàn)的,只是控制進(jìn)出元素的方式為后進(jìn)先出的棧方式解恰。


---------------------------該源碼為jdk1.7版本的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锋八,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子护盈,更是在濱河造成了極大的恐慌挟纱,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腐宋,死亡現(xiàn)場離奇詭異紊服,居然都是意外死亡檀轨,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進(jìn)店門欺嗤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來参萄,“玉大人,你說我怎么就攤上這事煎饼《锟妫” “怎么了?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵吆玖,是天一觀的道長筒溃。 經(jīng)常有香客問我,道長沾乘,這世上最難降的妖魔是什么怜奖? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮翅阵,結(jié)果婚禮上歪玲,老公的妹妹穿的比我還像新娘。我一直安慰自己怎顾,他們只是感情好读慎,可當(dāng)我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著槐雾,像睡著了一般夭委。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上募强,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天株灸,我揣著相機與錄音,去河邊找鬼擎值。 笑死慌烧,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鸠儿。 我是一名探鬼主播屹蚊,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼进每!你這毒婦竟也來了汹粤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤田晚,失蹤者是張志新(化名)和其女友劉穎嘱兼,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贤徒,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡芹壕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年汇四,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片踢涌。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡通孽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出斯嚎,到底是詐尸還是另有隱情利虫,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布堡僻,位于F島的核電站糠惫,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏钉疫。R本人自食惡果不足惜硼讽,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望牲阁。 院中可真熱鬧固阁,春花似錦、人聲如沸城菊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凌唬。三九已至并齐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間客税,已是汗流浹背况褪。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留更耻,地道東北人测垛。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像秧均,于是被迫代替她去往敵國和親食侮。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,860評論 2 361