美文网首页
Collection-Stack

Collection-Stack

作者: 小程有话说 | 来源:发表于2016-11-13 14:51 被阅读36次

    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;
        }
    

    代码

    相关文章

      网友评论

          本文标题:Collection-Stack

          本文链接:https://www.haomeiwen.com/subject/zqjcpttx.html