爪哇国新游记之十八----泛型栈类

复制代码
import java.lang.reflect.Array;

/**
 * 泛型栈
 *
 * @param <T>
 */
public class Stack<T>{
    private Class<T> type;// 栈元素所属的类
    private int size;// 栈深度
    private T[] arr;// 用数组存储
    private int top;// 栈顶元素的下标
    
    public Stack(Class<T> type,int size){
        this.type = type;
        this.size=size;
        arr=createArray(size);
        top=-1;
    }
    
    /**
     * 创建数组
     * @param size
     * @return
     */
    @SuppressWarnings("unchecked")    
    private T[] createArray(int size) {    
        return (T[]) Array.newInstance(type, size);    
    }
    
    /**
     * 压栈
     * @param t
     */
    public void push(T t){
        top++;
        arr[top]=t;
    }
    
    /**
     * 出栈
     * @return
     */
    public T pop(){
        T t=arr[top];
        top--;
        return t;
    }
    
    /**
     * 取栈顶元素
     * @return
     */
    public T peek(){
        return arr[top];
    }
    
    /**
     * 判断栈是否为空
     * @return
     */
    public boolean isEmpty(){
        return top==-1;
    }
    
    /**
     * 判断栈是否满了
     * @return
     */
    public boolean isFull(){
        return top==(size-1);
    }
    
    
    public static void main(String[] args){
        Stack<String> s=new Stack<String>(String.class,100);
        s.push("以恒心为良友");
        s.push("以经验为参谋");
        s.push("以小心为兄弟");
        s.push("以希望为哨兵");
        
        while(!s.isEmpty()){
            String str=s.pop();
            System.out.println(str);
        }
        
    }
}
复制代码

输出:

以希望为哨兵
以小心为兄弟
以经验为参谋
以恒心为良友
posted @   逆火狂飙  阅读(208)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东
点击右上角即可分享
微信分享提示