Collection-Stack

jdk版本:1.8.0_77
参考文档:jdk 1.8 docs

Stack类图

Stack继承关系

Stack特点

  1. Stack 栈(last-in-first-out)后进先出,继承自Vector,通过5个方法(push,pop,peek,empty,search)来实现栈特性。
  2. Stack method:
    (1). push向栈顶添加一个元素;
    (2). pop从栈顶弹出一个元素;
    (3). peek返回栈顶元素;
    (4). empty是否存在元素;
    (5). search从栈顶开始查找元素计算到顶部距离。
    @Test
    public void testUsual() {
        Stack stack = new Stack();
        stack.push("1");
        stack.push("2");
        stack.push("3");
        System.out.println("pop top element:" + stack.pop());
        System.out.println("peek top element:" + stack.peek());
        System.out.println("check stack empty:" + stack.empty());
        System.out.println("search element position:" + stack.search("1"));
    }
  1. 如果需要使用栈最好使用实现自Deque接口的类而不是Stack,Stack继承自Vector可以对指定位置元素做操作不安全;从面向接口编程角度考虑选择Deque是更好的选择。
    Deque<Integer> stack = new ArrayDeque<Integer>();
    @Test
    public void testChoose() {
        Stack stack1 = new Stack();
        Deque<String> stack2 = new ArrayDeque();
        stack1.push("1");
        stack2.push("1");
        stack1.add(1, "2");//Stack可以在指定位置添加元素
    }
  1. Stack是线程安全的,方法使用synchronized来保证线程之间同步。
    public synchronized E pop() {
        E       obj;
        int     len = size();

        obj = peek();
        removeElementAt(len - 1);

        return obj;
    }

代码

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,858评论 0 33
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 1,625评论 0 3
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,821评论 18 399
  • //Clojure入门教程: Clojure – Functional Programming for the J...
    葡萄喃喃呓语阅读 3,957评论 0 7
  • 苍离天邑泪满地,今世轮回岁难觅。 叹取三生锦源起,为止平世命两异。 丁香花残芬芳匿,杨柳枝断秋风细。 欲语还得萧瑟...
    亭墨轩雨阅读 228评论 2 0

友情链接更多精彩内容