ArrayList来实现一个栈或者使用LikedList当做栈来使用

ArrayList来实现一个栈:

复制代码
import java.util.ArrayList;

public class MyStack<T> implements Stack<T>{
    ArrayList a  = new ArrayList<>();
    @Override
    public boolean isEmpty() {
        // TODO Auto-generated method stub
        return a.isEmpty();
    }

    @Override
    public T peek() {
        // TODO Auto-generated method stub
        return (T)a.get(0);
    }

    @Override
    public T pop() {
        // TODO Auto-generated method stub
        return (T)a.remove(0);
    }

    @Override
    public void push(T element) {
        // TODO Auto-generated method stub
        a.add(0, element);
    }

    @Override
    public int size() {
        // TODO Auto-generated method stub
        return a.size();
    }

    @Override
    public void clear() {
        // TODO Auto-generated method stub
        a.clear();
    }
}
复制代码

 

测试:

复制代码
    public static void main(String[] args) {
        MyStack<String> stack = new MyStack<>();
        System.out.println("是否为空" + stack.isEmpty());
        stack.push("1");
        stack.push("2");
        System.out.println("是否为空" + stack.isEmpty());
        System.out.println(stack.pop());
        System.out.println(stack.peek());
        System.out.println("当前元素个数" + stack.size());
        stack.clear();
        System.out.println("清空后 当前元素个数" + stack.size());
        
    }
复制代码

执行结果:

是否为空true
是否为空false
2
1
当前元素个数1
清空后 当前元素个数0

 

使用LikedList做栈来使用

LikedLista本身就实现了栈定义的所有方法,所有就可用之间将LikedList当作栈来使用

复制代码
public static void main(String[] args) {
        LinkedList<String> stack = new LinkedList<>();
        System.out.println("是否为空" + stack.isEmpty());
        stack.push("1");
        stack.push("2");
        System.out.println("是否为空" + stack.isEmpty());
        System.out.println(stack.pop());
        System.out.println(stack.peek());
        System.out.println("当前元素个数" + stack.size());
        stack.clear();
        System.out.println("清空后 当前元素个数" + stack.size());
        
}
复制代码

 

执行结果:

是否为空true
是否为空false
2
1
当前元素个数1
清空后 当前元素个数0

 

posted @   小cai一碟  阅读(795)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示