首页 > 其他分享 >【code基础】stack

【code基础】stack

时间:2022-10-03 12:11:55浏览次数:53  
标签:deque code 基础 System Stack println stack out

官方定义的栈使用

两种定义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
    }


}

标签:deque,code,基础,System,Stack,println,stack,out
From: https://www.cnblogs.com/xiaoyu-jane/p/16750267.html

相关文章

  • vscode gif 设置扫描深度
    一个项目下,分为多个GIT仓库,如果都是在根目录下没有问题,VSCODE会自动扫出GIT库但是如果有一些仓库在其它子目前下,如果不设置VSCODE是不能扫出来总共四个仓库:根目录有2个仓库p......
  • Spring基础(十四):Spring的事务回顾
    文章目录​​Spring的事务回顾​​​​一、事务的概念​​​​二、事务的特性​​​​1、原子性​​​​2、一致性​​​​3、隔离性​​​​4、持久性​​​​三、事务的并......
  • 大数据必学Java基础(六十六):BlockingQueue常见子类
    文章目录​​BlockingQueue常见子类​​​​一、ArrayBlockingQueue​​​​1、添加元素​​​​2、获取元素​​​​3、源码​​​​4、其他的添加或者获取的方法都是依托......
  • Metasploit训练基础-网络后门
    后门后门,本意是指一座建筑背面开设的门,通常比较隐蔽,为进出建筑的人提供方便和隐蔽。在信息安全领域,后门是指绕过安全控制而获取对程序或系统访问权的方法。后门的最主要目的......
  • (四)MySQL基础知识之union和排序
    继续连着昨天数据库的基本操作,今天看下MySQL的union功能和排序 union:UNION操作符用于连接两个以上的SELECT语句的结果组合到一个结果集合中。如果多个SELECT语句会......
  • 大一学生《Web编程基础》期末网页制作 HTML+CSS 个人主页网页设计实例
    ......
  • JavaWeb 中的 HTTP 基础知识
    概念:超文本传输协议,规定了浏览器和服务器之间数据传输的规则。特点:基于TCP协议,面向连接,更安全基于请求-响应模型,一次请求对应一次响应是无状态的协议,对事务处理......
  • Leetcode 2337 -- 双指针&&脑筋急转弯
    题目描述在LR字符串中交换相邻字符给定我们一个只由\('L','R','X'\)组成的字符串。现在给你两个字符串\(start\)和\(end\),问你能否通过以下两个字符串变换,将字符串......
  • 一篇文章带你掌握主流基础框架——Spring
    一篇文章带你掌握主流基础框架——Spring这篇文章中我们将会介绍Spring的框架以及本体内容,包括核心容器,注解开发,AOP以及事务等内容那么简单说明一下Spring的必要性:Spri......
  • [Oracle] LeetCode 2 Add Two Numbers
    Youaregiventwonon-emptylinkedlistsrepresentingtwonon-negativeintegers.Thedigitsarestoredinreverseorder,andeachoftheirnodescontainsasin......