前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java栈的实例模拟

Java栈的实例模拟

作者头像
云海谷天
发布2022-08-09 14:02:12
4870
发布2022-08-09 14:02:12
举报
文章被收录于专栏:技术一点点成长

前言:

   “后进先出”---是栈(Stack)这种数据结构最基本的特点。很多程序设计语言都具有封装好的Stack工具,本文就带领大家一起将栈温习一下并附上一个模拟栈的程序。

   Java内存分配中,每通过new操作实例化一个对象时,其实对象是不规律地存放的。只不过JVM在加载完一个累并实例化一个对象之后又将堆中对应对象的内存地址通过引用变量规律地存放在栈中的。可通过下面的草图简单理解一下:

基于Java本身的内存机制,加上Stack是一个基础的数据结构。本文将用Java代码实现自己的一个类,其功能跟Java内部的Stack差不多,实现的原理也很近似。

代码语言:javascript
复制
 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 }

测试代码:

代码语言:javascript
复制
 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 }

 测试结果:

代码语言:javascript
复制
str15
str14
str13
str12
str11
str10
str9
str8
str7
str6
str5
str4
str3
str2
str1
--end--
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-08-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档