Java棧的執行個體類比

來源:互聯網
上載者:User

標籤:

前言:

   “後進先出”---是棧(Stack)這種資料結構最基本的特點。很多程式設計語言都具有封裝好的Stack工具,本文就帶領大家一起將棧溫習一下並附上一個類比棧的程式。

   Java記憶體配置中,每通過new操作執行個體化一個對象時,其實對象是不規律地存放的。只不過JVM在載入完一個累並執行個體化一個對象之後又將堆中對應對象的記憶體位址通過引用變數規律地存放在棧中的。可通過下面的草圖簡單理解一下:


基於Java本身的記憶體機制,加上Stack是一個基礎的資料結構。本文將用Java代碼實現自己的一個類,其功能跟Java內部的Stack差不多,實現的原理也很近似。

 1 package stack; 2  3 public class MyStack { 4      5     private Object[] elements; 6     private int size; 7     private final static int CAPACITY=10; 8      9     public MyStack(){10         this(CAPACITY);11     }12 13     public MyStack(int capacity) {14         elements = new Object[capacity];15     }16     17     public void push(Object o){18         int len=elements.length;19         if(size>=len){20             Object[] temp=new Object[2*len];21             System.arraycopy(elements, 0, temp, 0, len);22             elements=temp;23         }24         elements[size++]=o;25     }26     public Object pop(){27         return elements[--size];28     }29     public Object peek(){30         return elements[size-1];31     }32     public int getSize(){33         return size;34     }35     public boolean empty(){36         return size==0;37     }38 39 }

測試代碼:

 1 package stack; 2  3 public class TestStack { 4  5     /** 6      * @param args 7      */ 8     public static void main(String[] args) { 9         test2();10     }    11 12     private static void test2() {13         MyStack stack = new MyStack();14         for(int i=1;i<=15;i++){15             stack.push("str"+i);16         }17         while(!stack.empty()){18             System.out.println(stack.pop());19         }20         System.out.println("--end--");21     }    22 23 }

 

Java棧的執行個體類比

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.