【code基础】stack

官方定义的栈使用

两种定义stack的方法:

  • 一种是使用系统自带的Stack,具有线程安全性;
  • 另一种是使用Deque(双端队列),是官方较为推荐的,其有ArrayDeque和LinkedList这两种实现类
    Deque实现类是LinkedList、ArrayDeque、LinkedBlockingDeque

定义

  //三种定义
        Stack<Integer> stack0 = new Stack<>();
        Deque<Integer> stack1 = new ArrayDeque<>();
        Deque<Integer> stack2 = new LinkedList<>();

deque和Stack实现类的差别

  • deque,从左边进左边出,栈底在右侧
  • Stack,从右边进右边出,栈底在左侧

栈的操作

  • boolean empty() 测试栈是否为空
  • Object peek( ) 查看栈顶部的对象,但不从栈中移除它
  • Object pop( ) 移除栈顶部的对象,并作为此函数的值返回该对象
  • Object push(Object element) 把项压入栈顶部
  • int search(Object element) 返回对象在栈中的位置,以 1 为基数

java代码

  1. 栈的定义
public class StackInitial {
    public static void main(String[] args) {
     
        //不同实现的区别1-- new Stack
        Stack<Integer> stack = new Stack<>();
        stack.push(8);
        stack.push(9);

        //stack的打印和转换成list的方法
        System.out.println(new ArrayList<>(stack)); // [8,9]
        List<Integer> list1 = stack.stream().collect(Collectors.toList());//[8,9]
        System.out.println(list1); //[8, 9]
        System.out.println(stack); //[8, 9]
        System.out.println(stack.peek()); //9
        stack.pop();
        System.out.println(stack); //[8]

        //不同实现的区别2-- new ArrayDeque
        Deque<Integer> deque = new ArrayDeque<>();  //推荐写法
        deque.push(8);
        deque.push(9);
        // 推荐使用Deque定义,deque转成ArrayList或stream时保留了“后进先出”的语义

        System.out.println(new ArrayList<>(deque)); // [9,8]
        List<Integer> list2 = deque.stream().collect(Collectors.toList());//[9,8]
        System.out.println(list2);// [9,8]
        System.out.println(deque);// [9,8]
        System.out.println(deque.peek());//9
        deque.pop();
        System.out.println(deque); //[8]
    }

}

  1. 栈的使用
public class StackMain {
    public static void main(String[] args) {
        Stack<Integer> stack = new Stack<>();
        stack.push(5);
        stack.push(13);
        stack.push(8);
        stack.push(6);

        if (stack.empty()){
            System.out.println("Stack is empty!");
            return;
        }

        stack.pop();
        System.out.println("The top element is:" + stack.peek()); //The top element is:8
        System.out.println("The size is :" + stack.size()); //The size is :3
    }


}
posted @ 2022-10-03 11:57  xiaoyu_jane  阅读(26)  评论(0编辑  收藏  举报