Java数据结构入门:栈与队列的核心原理、实现及应用
Java 栈Stack与队列Queue超详细总结附代码示例一、前言栈和队列是最基础、最常用的线性数据结构它们本质上都是对“线性表”的使用限制区别只在于进出元素的规则不同。- 栈先进后出LIFO- 队列先进先出FIFO二、栈Stack1. 栈是什么栈是一种只能在一端进行插入和删除的线性表。这一端称为栈顶top另一端称为栈底bottom。特点- 先进后出Last In First OutLIFO- 只允许操作栈顶元素2. Java 中的栈Java 里常用栈有两种实现方式1. java.util.Stack传统继承自 Vector不推荐高并发2. Deque 接口官方推荐如 ArrayDeque、LinkedList开发与面试优先使用 DequeStack 类已不推荐。3. 常用方法以 Deque 为例javaDequeInteger stack new ArrayDeque();- push(e) 入栈- pop() 出栈并返回- peek() 查看栈顶不删除- isEmpty() 判断是否为空- size() 元素个数4. 栈代码示例public class StackDemo {public static void main(String[] args) {DequeInteger stack new ArrayDeque();// 入栈stack.push(1);stack.push(2);stack.push(3);System.out.println(栈顶元素 stack.peek()); // 3// 出栈while (!stack.isEmpty()) {System.out.print(stack.pop() ); // 3 2 1}}}输出plaintext栈顶元素33 2 1三、队列Queue1. 队列是什么队列是只能在一端插入另一端删除的线性表。- 队尾rear添加元素- 队头front删除元素特点- 先进先出First In First OutFIFO2. Java 中的队列常用实现类- LinkedList实现了 Queue- ArrayDeque效率更高推荐3. 常用方法QueueInteger queue new LinkedList();- offer(e) 入队推荐- poll() 出队并返回- peek() 查看队头不删除- isEmpty() 是否为空- size() 元素个数4. 队列代码示例public class QueueDemo {public static void main(String[] args) {QueueInteger queue new LinkedList();// 入队queue.offer(1);queue.offer(2);queue.offer(3);System.out.println(队头元素 queue.peek()); // 1// 出队while (!queue.isEmpty()) {System.out.print(queue.poll() ); // 1 2 3}}}输出plaintext队头元素11 2 3四、栈与队列对比总结结构 全称 特点 典型操作栈 LIFO 先进后出 push/pop/peek队列 FIFO 先进先出 offer/poll/peek一句话记忆- 栈像弹匣最后放进去的最先打出来- 队列像排队先来先走五、经典应用场景栈的应用1. 方法调用栈JVM 栈帧2. 括号匹配有效括号3. 表达式求值后缀表达式队列的应用1. 消息队列、任务排队2. BFS 广度优先搜索3. 缓冲区、生产者消费者模型六、总结- 栈先进后出常用 ArrayDeque 实现- 队列先进先出常用 LinkedList 或 ArrayDeque
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2432499.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!