我了解的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+ 树实现
相关文章
|
存储 NoSQL 安全
Redis数据结构之——sds
Redis数据结构之——sds
|
2月前
|
JavaScript 前端开发 Java
=和==和=== 和 equals 的区别
本内容介绍了编程中常见的运算符与方法区别,包括赋值运算符“=”,比较运算符“==”,以及JavaScript中用于全等比较的“===”。同时说明了在Java中“==”和equals方法的区别
274 5
|
2月前
|
数据采集 消息中间件 监控
单机与分布式:社交媒体热点采集的实践经验
在舆情监控与数据分析中,单机脚本适合小规模采集如微博热榜,而小红书等大规模、高时效性需求则需分布式架构。通过Redis队列、代理IP与多节点协作,可提升采集效率与稳定性,适应数据规模与变化速度。架构选择应根据实际需求,兼顾扩展性与维护成本。
|
2月前
|
Java Linux API
网络编程中,BIO、NIO、AIO的区别
本文介绍了Web开发中客户端与服务器交互的流程,以及BIO、NIO和AIO三种I/O模型的区别与应用场景。重点分析了线程阻塞与非阻塞对并发性能的影响,并探讨了Java 21中虚拟线程对传统BIO模型的优化。
100 4
|
2月前
|
存储 虚拟化 iOS开发
VMware ESXi 7.0U3w macOS Unlocker & OEM BIOS 2.7 标准版和厂商定制版
VMware ESXi 7.0U3w macOS Unlocker & OEM BIOS 2.7 标准版和厂商定制版
207 0
VMware ESXi 7.0U3w macOS Unlocker & OEM BIOS 2.7 标准版和厂商定制版
|
2月前
|
SQL 关系型数据库 分布式数据库
一条SQL管理向量全生命周期,让AI应用开发更简单
本文探讨了AI应用开发中向量数据管理的挑战,介绍了PolarDB IMCI通过在数据库内核中集成向量索引与Embedding能力,实现向量全生命周期管理的创新方案。该方案有效解决了技术栈分裂、数据孤岛和运维复杂等痛点,提供了一体化、高性能、支持事务与实时检索的向量数据库服务,极大降低了AI应用的开发与维护门槛。
200 26
一条SQL管理向量全生命周期,让AI应用开发更简单
|
2月前
|
Java 索引
Java 中的异常
本文介绍了Java中异常的继承关系及分类,重点讲解了Throwable作为顶层父类,Error表示不可恢复错误,Exception表示可恢复异常,并区分了检查异常与非检查异常(RuntimeException)。
|
2月前
|
运维 Prometheus 监控
可观测性不是监控的马甲:运维团队到底该怎么升级?
可观测性不是监控的马甲:运维团队到底该怎么升级?
93 7
|
2月前
|
Windows
电脑提示错误0xc0000142的解决方法
遇到电脑提示错误0xc0000142时,可以尝试以下解决方法: 检查程序兼容性设置‌