我了解的java中常见的数据结构

简介: 本内容介绍了常见的数据结构,包括线性结构(如动态数组、链表、栈、队列)和非线性结构(如优先级队列、哈希表、红黑树、跳表、B+树),并结合 Java 中的具体实现(如 ArrayList、LinkedList、PriorityQueue、HashMap、TreeMap 等)说明其特点与应用场景。

线性结构

  • 动态数组:相对于普通数组可以扩容
  • java 中 ArrayList 就属于动态数组
  • 数组的特点是其中元素是连续存储的
  • 链表:由多个节点链在一起
  • java 中的 LinkedList 就属于链表
  • 链表的特点是其中元素是不连续存储的,每次需要根据当前节点,才能找到相邻节点
  • 栈:符合 First In Last Out(先进后出)规则
  • java 中的 LinkedList 可以充当栈
  • 它的 push 方法向栈顶添加元素
  • 它的 pop 方法从栈顶移除元素
  • 它的 peek 方法从栈顶获取元素(不移除)
  • 队列:符合 First In First Out(先进先出)规则
  • java 中 LinkedList 也可以充当队列
  • 它的 offer 方法用来向队列尾部添加元素(入队)
  • 它的 poll 方法用来从队列头部移除元素(出队)

非线性结构

  • 优先级队列:在队列基础上增加了优先级,队列会根据优先级调整元素顺序,保证优先级高的元素先出队
  • java 中 PriorityQueue 可以作为优先级队列
  • 它底层用大顶堆或小顶堆来实现
  • 它适用于实现排行榜、任务调度等编码
  • 它特别适合于流式数据的处理,利用它能够大大节省内存
  • Hash 表(哈希表,也叫散列表):由多对 key - value 组成,会根据 key 的 hash 码把它们分散存储在数组当中,其中 key 的 hash 码与数组索引相对应
  • java 中的 HashMap,Hashtable 都属于哈希表
  • 它特别适用于实现数据的快速查找
  • 红黑树:可以自平衡的二叉查找树,相对于线性结构来说,拥有更好的性能
  • java 中的 TreeMap 属于红黑树
  • 跳表:多级链表结构,也能达到与红黑树同级的性能,且实现更为简单
  • java 中的 ConcurrentSkipListMap 用跳表结构实现
  • redis 中的 SortedSet 也是用跳表实现
  • B+ 树:可以自平衡的 N 叉查找树
  • 关系型数据库的索引常用 B+ 树实现
相关文章
|
7月前
|
数据采集 消息中间件 监控
单机与分布式:社交媒体热点采集的实践经验
在舆情监控与数据分析中,单机脚本适合小规模采集如微博热榜,而小红书等大规模、高时效性需求则需分布式架构。通过Redis队列、代理IP与多节点协作,可提升采集效率与稳定性,适应数据规模与变化速度。架构选择应根据实际需求,兼顾扩展性与维护成本。
208 2
|
7月前
|
Windows
电脑提示错误0xc0000142的解决方法
遇到电脑提示错误0xc0000142时,可以尝试以下解决方法: 检查程序兼容性设置‌
|
7月前
|
JavaScript 前端开发 Java
=和==和=== 和 equals 的区别
本内容介绍了编程中常见的运算符与方法区别,包括赋值运算符“=”,比较运算符“==”,以及JavaScript中用于全等比较的“===”。同时说明了在Java中“==”和equals方法的区别
443 5
|
JavaScript 前端开发 设计模式
什么是MVVM
什么是MVVM
|
4月前
|
JavaScript 前端开发 安全
TypeScript 与 ArkTS 全面对比:鸿蒙生态下的语言演进
本文深入对比TypeScript与华为鸿蒙原生语言ArkTS,从类型系统、UI开发、性能优化到生态定位,全面解析二者差异。ArkTS基于TS演进,面向操作系统层级重构,具备强类型安全、声明式UI、AOT编译与分布式能力,助力“一次开发,多端部署”。结合10亿鸿蒙设备爆发趋势,为开发者提供技术选型指南与平滑迁移路径,是进军全场景智慧生态的关键钥匙。(238字)
467 1
|
15天前
|
存储 人工智能 安全
如何在 OpenClaw (Clawdbot) 配置阿里云百炼 API +云上+本地部署OpenClaw及常见问题解答
在AI自动化工具爆发的2026年,OpenClaw(前身为Clawdbot、Moltbot)凭借开源轻量化架构、强大的任务调度能力及丰富的技能生态,成为个人与轻量团队搭建专属AI助手的首选。其核心价值在于“自然语言指令+模块化技能扩展”,而阿里云百炼大模型的接入,更让OpenClaw具备了顶尖的推理能力,可轻松处理邮件自动化、代码开发、文件管理等复杂任务。
2139 3
|
7月前
|
Java Linux API
网络编程中,BIO、NIO、AIO的区别
本文介绍了Web开发中客户端与服务器交互的流程,以及BIO、NIO和AIO三种I/O模型的区别与应用场景。重点分析了线程阻塞与非阻塞对并发性能的影响,并探讨了Java 21中虚拟线程对传统BIO模型的优化。
163 4
|
3月前
|
架构师 Java 数据库
Java开发进阶:从初级工程师到架构师的能力提升路径
Java开发者从初级到架构师需经历技术与软实力的全面提升。本文梳理各阶段能力要求:夯实基础、掌握主流框架、深入分布式技术、培养系统设计与业务洞察力,助力开发者明确职业进阶路径,成长为具备全局视野的技术领导者。
|
7月前
|
Java 索引
Java 中的异常
本文介绍了Java中异常的继承关系及分类,重点讲解了Throwable作为顶层父类,Error表示不可恢复错误,Exception表示可恢复异常,并区分了检查异常与非检查异常(RuntimeException)。
152 9

热门文章

最新文章