【Java基础面试题038】栈和队列在Java中的区别是什么?

server/2024/12/29 0:42:26/

回答重点

栈(Stack):遵循后进先出(LIFO,Last In,First Out)原则。即,最后插入的元素最先被移除。主要操作包括push(入栈)和pop(出栈)。Java中的Stack类(java.util.Stack)实现了这个数据结构

java">public class StackTest {public static void main(String[] args) {Stack<String> stack = new Stack<>();stack.push("apple");stack.push("banana");stack.push("orange");System.out.println(stack);stack.pop();System.out.println(stack);System.out.println(stack.peek());stack.forEach(System.out::println);}
}

队列(Queue):遵循先进先出(FIFO,First In,First Out)原则。即,最早插入的元素最先被移除。主要操作包括enqueue(入队)和dequeue(出队)。Java中的Queue接口(java.util.Queue)提供了此数据结构的实现,如LinkedList和PriorityQueue

java">public class QueueTest {public static void main(String[] args) {Queue<String> queue = new LinkedList<>();queue.addAll(Arrays.asList("apple", "banana", "orange", "grape"));queue.forEach(System.out::println);}
}

使用场景:

  • 栈:常用于函数调用、表达式求值、回溯算法(如深度优先搜索)等场景
  • 队列:常用于任务调度、资源管理、数据流处理(如广度优先搜索)等场景

扩展知识

栈的变体:

  • 双端队列(Deque):支持在两端插入和删除元素,可以用作栈或队列。java.util.ArrayDeque和java.util.LinkedList都实现了Deque接口,提供了栈和队列功能

队列的变体:

  • 优先队列(PriorityQueue):队列中的元素按优先级排序,而不是按插入排序。适用于需要按优先级处理任务的场景
  • 阻塞队列(BlockingQueue):支持阻塞操作,特备适合多线程环境中的生产者-消费者问题。常用实现包括ArrayBlockingQueue、LinkedBlokingQueue和PrioriryBlockingQueue


http://www.ppmy.cn/server/154057.html

相关文章

QTDemo:串口调试工具

项目简介 本项目通过QT框架设计一款可以在Windows、Linux等平台的跨平台串口助手&#xff0c;串口功能能够满足基本的调试需求。 本项目采用的版本为&#xff1a;QT5.14 visual studio 2022 进行开发。 项目源码&#xff1a;https://github.com/say-Hai/MyCOMDemo 项目页面&am…

区块链平台安全属性解释

区块链平台安全属性解释 双向认证 解释:双向认证是指在通信过程中,**通信双方都需要对对方的身份进行验证,确保对方是合法的、可信任的实体。**只有双方身份都得到确认后,通信才会被允许进行,从而防止非法用户的接入和数据的窃取或篡改。举例:在基于区块链和联邦学习的数…

【ELK】filebeat采集数据输出到kafka指定topic

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 背景filebeat主体配置filebeat.inputs部分filebeat.output部分 filebeat完整配置 背景 今天收到需求&#xff0c;生产环境中通需要优化filebeat的输出&#xff0c;…

StarRocks 存算分离在得物的降本增效实践

编者荐语&#xff1a; 得物优化数据引擎布局&#xff0c;近期将 4000 核 ClickHouse 迁移至自建 StarRocks&#xff0c;成本降低 40%&#xff0c;查询耗时减半&#xff0c;集群稳定性显著提升。本文详解迁移实践与成果&#xff0c;文末附丁凯剑老师 StarRocks Summit Asia 2024…

设计一个监控摄像头物联网IOT(webRTC、音视频、文件存储)

前言&#xff1a; 设计一个完整的 监控摄像头物联网 IoT 平台 涉及 视频直播和点播、WebRTC 和 文件存储模块&#xff0c;可以分为以下几个主要部分&#xff1a;摄像头设备、服务端处理、Web 前端、视频流存储和回放。以下是结合这些技术的一个具体完整流程设计&#xff0c;涵盖…

python笔记随记

前言 笔记记录 内容 1.关键词条件&#xff1a; 代码块 2.总是只有一个if语句被执行&#xff0c;所有需要的elif语句在if语句之后&#xff0c;它们的先后顺序很重要&#xff0c;当前边的的if或elif已经执行则下边的elif则全部跳过&#xff0c;如果希望确保一个语句被执行则…

OpenAI 12天发布会:AI革命的里程碑@附35页PDF文件下载

在人工智能的浪潮中&#xff0c;OpenAI的12天发布会无疑是2024年科技界的一场盛宴。从12月5日开始&#xff0c;OpenAI连续12天每天发布一个新应用或功能&#xff0c;标志着AI技术的又一次飞跃。本文将梳理这些激动人心的发布&#xff0c;带你一探究竟。 OpenAI发布会概览 Ope…

Qt6 QML RegularExpressionValidator 输入中文的坑

本人最近使用Qt6.7.2编译CMAKE项目&#xff0c;主风格qml &#xff0c;但在用TextField{}时却遇到了问题&#xff0c; 原本要求&#xff0c;编辑框只能输入中文汉字&#xff0c; 一听&#xff0c;很简单嘛&#xff0c;正则表达式&#xff1a; 一看&#xff0c;没毛病&#xf…