Collection-Stack

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

Stack类图

Collection-Stack_第1张图片
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 stack = new ArrayDeque();
    @Test
    public void testChoose() {
        Stack stack1 = new Stack();
        Deque 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)