当前位置: 首页 > article >正文

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

回答重点

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

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

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.kler.cn/a/457871.html

相关文章:

  • YOLOv9-0.1部分代码阅读笔记-train.py
  • NetSuite Formula(HTML)超链打开Transaction
  • VueRouter之props参数
  • 查询docker overlay2文件夹下的 c7ffc13c49xxx是哪一个容器使用的
  • 一个在ios当中采用ObjectC和opencv来显示图片的实例
  • 0055. shell命令--useradd
  • JVM内存结构详解
  • 正则表达式:常见问题与解决方案
  • 【魅力golang】之-反射
  • Vue项目如何设置多个静态文件;如何自定义静态文件目录
  • 【机器学习】SVM支持向量机(一)
  • Raven Glass:迈向AR领域的iPod,开启全天候佩戴的时尚新时代
  • Redis - Token JWT 概念解析及双token实现分布式session存储实战
  • C++ 设计模式:享元模式(Flyweight Pattern)
  • c#中using语句
  • 【LLM综述】29种大模型Prompt Engineering技术
  • 【大语言模型】LangChain 核心模块介绍(Memorys)
  • Python Polars快速入门指南:LazyFrames
  • 苹果手机iOS18.2系统苹果手机便签测评
  • Type-C接口的拍摄云台
  • OpenCV-Python实战(13)——图像轮廓
  • 【每日学点鸿蒙知识】Provider、Navigation返回参数、隐私声明问题、Text判断函数、自定义hvigor插件
  • 初入图像处理:水稻剑叶夹角测量
  • 【Hackthebox 中英 Write-Up】通过 POST 请求绕过前端限制:基于 Cookie 的认证与数据提取实操指南
  • AI大模型语音识别转文字
  • 在 CentOS 7 上安装 Node.js 20 并升级 GCC、make 和 glibc