基础的数据结构

简介: 线性结构包括动态数组、链表、栈和队列,适用于顺序存储与操作。非线性结构如优先级队列、哈希表、红黑树、跳表和B+树,适用于复杂数据组织与高效查找。不同结构适用于不同场景,如HashMap适合快速查找,B+树用于数据库索引。

线性结构

动态数组:可以扩容,连续存储( ArrayList)

链表:不连续存储,有当前节点,才能找到相邻节点(linkedlist)

:先进后出,常用方法pop(出栈) push(入栈)peek(栈顶获取)linkedlist

队列:先进先出, linkedlist实现的是双端队列,常用方法:addfirst,addlast,标准队列off队尾添加。poll队头移除

非线性结构:

优先级队列: 保证优先级高的先出队,实现方式小顶堆(优先级小的都是根节点),或者大顶堆(优先级高的都是根节点)适合流式数据的处理(流式数据:无结束点,持续性)

hash表 key-value结构,根据key生成hash码存储数据value,适合数据的快速查找,实现有 HashMap(初始链表+数组,链表长度大于8数组长度大于64转化为红黑树,单线程首选),Hashtable(线程安全,效率低下)

红黑树:自平衡的二叉查找树,相对线性结构性能较好, TreeMap 属于红黑树

跳表:多级链表结构,链表上有多层索引,层级随机,比红黑树实现简单,性能差不多 。java 中的 ConcurrentSkipListMap 用跳表结构实现,redis 中的 SortedSet 也是用跳表实现

B+ 树:可以自平衡的 N 叉查找树。关系型数据库的索引常用 B+ 树实现

相关文章
|
4月前
|
SQL XML 安全
初识MP
本文介绍了 MyBatis-Plus 在复杂应用中的使用技巧,涵盖条件构造器(如 QueryWrapper、UpdateWrapper 及其 Lambda 表达式版本)、自定义 SQL 的优化方式,以及分页和多表查询的处理方法。重点比较了 LambdaQueryWrapper 与 QueryWrapper 的适用场景,推荐单表操作优先使用 Lambda 方式以提升类型安全性,而多表联查则更适合使用 QueryWrapper 的灵活性。同时,通过示例说明了如何结合 Wrapper 与自定义 SQL 来构建高效、可维护的数据库操作逻辑。
|
Windows
Windows 技术篇-文件管理器访问ftp服务失败,提示:“打开FTP服务器上的文件夹是发生错误,请检查是否有权限访问该文件夹。”问题解决方法
Windows 技术篇-文件管理器访问ftp服务失败,提示:“打开FTP服务器上的文件夹是发生错误,请检查是否有权限访问该文件夹。”问题解决方法
3559 0
Windows 技术篇-文件管理器访问ftp服务失败,提示:“打开FTP服务器上的文件夹是发生错误,请检查是否有权限访问该文件夹。”问题解决方法
|
前端开发 JavaScript Java
【前端技术】 ES6 介绍及常用语法说明
【前端技术】 ES6 介绍及常用语法说明
265 4
|
11月前
|
容灾 网络协议 数据库
云卓越架构:云上网络稳定性建设和应用稳定性治理最佳实践
本文介绍了云上网络稳定性体系建设的关键内容,包括面向失败的架构设计、可观测性与应急恢复、客户案例及阿里巴巴的核心电商架构演进。首先强调了网络稳定性的挑战及其应对策略,如责任共担模型和冗余设计。接着详细探讨了多可用区部署、弹性架构规划及跨地域容灾设计的最佳实践,特别是阿里云的产品和技术如何助力实现高可用性和快速故障恢复。最后通过具体案例展示了秒级故障转移的效果,以及同城多活架构下的实际应用。这些措施共同确保了业务在面对网络故障时的持续稳定运行。
|
11月前
|
人工智能 运维 监控
云卓越架构:企业稳定性架构体系和AI业务场景探秘
本次分享由阿里云智能集团公共云技术服务部上海零售技术服务高级经理路志华主讲,主题为“云卓越架构:企业稳定性架构体系和AI业务场景探秘”。内容涵盖四个部分:1) 稳定性架构设计,强调高可用、可扩展性、安全性和可维护性;2) 稳定性保障体系和应急体系的建立,确保快速响应和恢复;3) 重大活动时的稳定重宝策略,如大促或新业务上线;4) AI在企业中的应用场景,包括智能编码、知识库问答、创意广告生成等。通过这些内容,帮助企业在云计算环境中构建更加稳定和高效的架构,并探索AI技术带来的创新机会。
|
JavaScript 安全 前端开发
什么是同源策略
什么是同源策略
265 0
|
编解码 缓存 算法
视频帧里的I帧、P帧、B帧是什么?
I帧、P帧、B帧是视频编码中的基本概念。I帧是帧内编码帧,无需参考其他帧即可解码;P帧是前向预测编码帧,基于前一帧解码;B帧是双向预测编码帧,基于前后帧解码。IDR帧是一种特殊的I帧,用于即时解码刷新,防止错误传播。GOP(Group of Pictures)是一组连续的画面,第一个帧为I帧,gop_size设置越大,画质越好,但解码延迟增加。OpenGOP允许GOP间的帧依赖,而ClosedGOP则不允许。DTS(解码时间戳)和PTS(显示时间戳)分别用于解码和显示时间控制。
|
存储 Prometheus 运维
All in One:Prometheus 多实例数据统一管理最佳实践
当管理多个Prometheus实例时,阿里云Prometheus托管版相比社区版提供了更可靠的数据采集和便捷的管理。本文比较了全局聚合实例与数据投递方案,两者在不同场景下各有优劣。
63524 116
|
存储 缓存 数据库
CodeFuse开源ModelCache大模型语义缓存
CodeFuse 开源火热进行中!本次开源的是 ModelCache 大模型语义缓存,可大幅降低大模型应用的推理成本,提升用户体验。 CodeFuse-ModelCache 项目地址: https://github.com/codefuse-ai/CodeFuse-ModelCache
837 0
|
域名解析 缓存 网络协议
【域名解析DNS专栏】深入理解DNS根服务器与顶级域服务器
【5月更文挑战第24天】DNS的根服务器和顶级域服务器在域名解析中起关键作用。根服务器是核心,负责提供顶级域服务器引用,维护顶级域列表;顶级域服务器管理如.com的域名,处理二级域名解析和管理。这两者影响解析速度、可靠性和安全性。了解它们有助于优化DNS配置和提升网站访问体验。
1443 1
【域名解析DNS专栏】深入理解DNS根服务器与顶级域服务器