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

List、Queue、Deque、Stack常用方法总结

Java 中几个常见的线性数据结构方法总结与对比,包括:

  • ListArrayListLinkedList
  • QueueLinkedListPriorityQueue
  • DequeArrayDequeLinkedList
  • Stack(传统 Stack 类,和推荐的 Deque 实现)

一、接口/类总览

接口/类常见实现类特点
List<E>ArrayList, LinkedList有序、可重复、索引访问
Queue<E>LinkedList, PriorityQueueFIFO 队列
Deque<E>LinkedList, ArrayDeque双端队列,支持栈和队列
Stack<E>Stack(继承 VectorLIFO 栈(已不推荐)

二、常用方法对比

方法名ListQueueDequeStack
add(E)✅ 尾部添加✅ 尾部添加✅ 尾部添加✅ 尾部添加
add(int, E)✅ 指定位置插入
addFirst(E)❌(ArrayList)
✅(LinkedList)
addLast(E)❌(ArrayList)
✅(LinkedList)
offer(E)✅(添加)
offerFirst(E)
offerLast(E)
get(int)✅(search用)
remove()✅(移除队首)✅(移除队首)✅(移除栈顶)
poll()✅(移除队首)
pollFirst()
pollLast()
peek()✅(查看队首)✅(查看栈顶)
peekFirst()
peekLast()
pop()✅(从头)
push(E)✅(加头)
isEmpty()
clear()
contains(E)
size()

三、队列和栈的实现

//队列
Queue<Integer> queue = new LinkedList<>();
//deque实现队列
Deque<Integer>queue = new ArrayDeque<>();
//栈
Stack<Integer>stack = new Stack<>();
//deque实现栈
Deque<Integer>stack = new ArrayDeque<>();

四、LinkedListArrayList底层结构对比

特性ArrayListLinkedList
底层结构动态数组(连续内存)双向链表(非连续内存)
查询效率✅ O(1) 直接索引❌ O(n) 从头/尾遍历
插入效率(中间)❌ O(n)(需要移动元素)✅ O(1)(节点引用调整)
插入效率(尾部)✅ 摊销 O(1)✅ O(1)
删除效率(中间)❌ O(n)✅ O(1)(已定位)
内存使用少(仅数据)多(每个节点额外两个指针)

增删频繁用 LinkedList,查询频繁用 ArrayList

http://www.lryc.cn/news/571413.html

相关文章:

  • 论文笔记:Trajectory generation: a survey on methods and techniques
  • DELL R730XD服务器调整风扇转速
  • python+uniapp微信小程序的共享雨伞租赁系统
  • [特殊字符]华为总部参观预约|企业通道揭秘
  • MySQL 中 DISTINCT 去重的核心注意事项详解
  • MSPM0G3507学习笔记(二) 超便捷配置led与按键
  • ffmpeg webm 透明通道视频转成rgba图片
  • 基于最新豆包大模型1.6实现 ArXiv Paper Reading MCP与Agent构建
  • C++ map代码练习 1、2、priority_queue基础概念、对象创建、数据插入、获取堆顶、出队操作、大小操作,自定义结构、代码练习 1 2
  • 电机及驱动器的安全、性能和能效认证
  • 02 ( chrome 浏览器插件, 立马翻译), 搭建本地 api
  • c++学习-多态
  • MacOS上MySQL的安装以及使用
  • 【编译工具】CodeRider 2.0:驭码 CodeRider 2.0 产品功能分析
  • 【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(软件篇)(二)
  • RK 安卓10/11平台 HDMI-IN 调试
  • RAG轻松通-P1:分块
  • 爬虫技术:数据获取的利器与伦理边界
  • 输电线路电缆护层环流在线监测装置:原理、优势与应用解析
  • Elasticsearch/OpenSearch MCP Quickstart
  • 日本生活:日语语言学校-日语作文-沟通无国界(2):回忆深刻的生日
  • threejs webVR获取相机正前方向量
  • 【保姆级】讯飞ROS智能车 Debian系统 U盘克隆/恢复教程
  • Spring Boot启动流程深度解析(源码级剖析)
  • 键盘动作可视化技术浅析:如何做到低延迟显示
  • word如何插入高清晰的matlab绘图
  • 【数据分析三:Data Storage】数据存储
  • Kafka数据写入流程源码深度剖析(Broker篇)
  • Python训练营打卡Day50
  • Linux网络配置工具ifconfig与ip命令的全面对比