数据结构与算法,这4种结构写代码时每天都在用
很多初学者觉得数据结构与算法是面试造火箭工作拧螺丝的东西。实际上日常写代码的过程中你时时刻刻都在和数据结构和算法打交道只是没有意识到而已。这篇文章不讲红黑树、B树这些复杂结构就说说工作中最常用的4种数据结构。1. 数组——最基础也最高效数组是连续内存空间支持O(1)的随机访问。Java里的ArrayList、Python里的list、C里的vector底层都是数组。什么时候用数组需要频繁按下标访问元素的时候。比如存储一批用户ID、一周七天的温度数据。缺点是插入删除成本高要移动元素扩容有性能开销。一个小技巧如果你知道数据规模的上限初始化时指定容量可以避免多次扩容带来的性能损耗。java// Java - 指定初始容量 ListString list new ArrayList(1000);python# Python - 列表预留空间虽然不直接支持但可以用乘法初始化 data [None] * 10002. 哈希表——O(1)的查找神器哈希表是工作中用得最多的数据结构没有之一。Java的HashMap、Python的dict、C的unordered_map底层都是哈希表。java// Java - 用HashMap做缓存 MapString, User userCache new HashMap(); User user userCache.getOrDefault(userId, loadFromDB(userId));python# Python - 用dict统计词频 word_count {} for word in words: word_count[word] word_count.get(word, 0) 1cpp// C - unordered_map的使用 #include unordered_map std::unordered_mapstd::string, int scores; scores[Alice] 100; auto it scores.find(Bob); if (it ! scores.end()) { std::cout it-second; }O(1)的查找、插入、删除让哈希表成为解决快速查找问题的不二之选。代价是内存消耗较大且元素无序Java的LinkedHashMap、Python 3.7的dict可以保持插入顺序。实际应用场景缓存数据用户信息、配置项去重用Set底层也是哈希表计数统计词频、PV/UV快速查找根据ID查对象3. 链表——灵活的动态结构链表的优势在于插入删除是O(1)不需要连续内存。Java的LinkedList、Python的deque都基于链表或类似的链式结构。python# Python - 用deque实现高效的头尾操作 from collections import deque d deque([1, 2, 3]) d.appendleft(0) # 左侧插入 O(1) d.append(4) # 右侧插入 O(1) first d.popleft() # 左侧弹出 O(1)实际工作中链表很少独立使用但它是LRU缓存、消息队列等更高级结构的基础。算法题里常见的反转链表、合并两个有序链表考察的其实是对指针/引用操作的熟练度。java// Java - 手写一个简单链表的节点 class ListNode { int val; ListNode next; ListNode(int val) { this.val val; } } // 反转链表 ListNode reverse(ListNode head) { ListNode prev null; ListNode curr head; while (curr ! null) { ListNode next curr.next; curr.next prev; prev curr; curr next; } return prev; }4. 栈和队列——规则简单的工具栈是后进先出LIFO队列是先进先出FIFO。这两个结构规则简单但应用极广。栈的应用函数调用栈递归就是靠栈括号匹配编译器检查语法表达式求值中缀转后缀浏览器的前进后退队列的应用消息队列RabbitMQ、Kafka的底层思想BFS广度优先搜索线程池的任务队列缓冲区的数据排队python# Python - deque可以当栈也可以当队列 from collections import deque # 当作栈使用 stack deque() stack.append(1) # 入栈 stack.append(2) top stack.pop() # 出栈 → 2 # 当作队列使用 queue deque() queue.append(1) # 入队 queue.append(2) first queue.popleft() # 出队 → 1java// Java - 栈和队列 StackInteger stack new Stack(); stack.push(1); int top stack.pop(); QueueInteger queue new LinkedList(); queue.offer(1); int first queue.poll();5. 额外补充树结构简单提一下虽然文章标题说4种但二叉树在开发中也很常见值得简单一提。二叉搜索树BST可以让查找、插入、删除都达到O(log n)的时间复杂度。但普通BST可能退化成链表所以实际生产中用的是平衡二叉树如Java的TreeMap、C的std::map底层是红黑树。java// Java - TreeMap基于红黑树有序 MapString, Integer sortedMap new TreeMap(); sortedMap.put(banana, 1); sortedMap.put(apple, 2); sortedMap.put(cherry, 3); // 遍历会按key的自然顺序输出apple, banana, cherry学会选择合适的数据结构写代码的时候多问自己一句这里用什么数据结构最合适场景推荐数据结构需要快速按位置取元素数组ArrayList需要快速查找某个键对应的值哈希表HashMap/dict需要频繁在两端插入删除双端队列deque需要按顺序取出元素并移除队列Queue需要后进先出的场景栈Stack需要有序存储且频繁查找平衡树TreeMap需要去重哈希集合HashSet/set

相关新闻

实战测试10款降AI率网站:只选真正管用的那一款!

实战测试10款降AI率网站:只选真正管用的那一款!

AI写作工具让论文撰写和内容创作变得高效便捷,越来越多的学生和职场人开始依赖这类工具提升效率。然而,随着AIGC检测技术的不断升级,问题也随之而来——不少用户发现,自己用AI生成的内容被平台或系统识别为“AI痕迹明显”&#xf…

2026/7/27 14:20:14 阅读更多 →
【开题利器】专业级AI写作辅助网站:研究框架、文献综述一键搭建

【开题利器】专业级AI写作辅助网站:研究框架、文献综述一键搭建

每到开题季,无数本硕学子都会陷入同款困境:选题无思路、研究框架逻辑混乱、翻阅上百篇文献仍写不出合格综述、参考文献格式反复出错、熬夜搭建结构却被导师全盘打回。传统手工梳理文献、徒手搭建研究框架的模式耗时耗力,稍有疏漏就会延误开题…

2026/7/28 3:51:38 阅读更多 →
甲骨文云充值入口在哪?账号付款设置说明

甲骨文云充值入口在哪?账号付款设置说明

很多人第一次用甲骨文云,都会遇到一个挺尴尬的问题:账号明明注册好了,却怎么也找不到充值的地方;要么好不容易找到入口,绑了信用卡,结果提示支付失败。更烦人的是,甲骨文云控制台的界面老在变&a…

2026/7/28 0:54:15 阅读更多 →

最新新闻

如何对远程jar包进行Debug?

如何对远程jar包进行Debug?

在现实开发过程中,现场环境永远比开发环境复杂,如果开发环境无法还原现场问题,就需要开发人员远程调试现场问题,接下来,本人基于网上讲解以及自己的理解完成远程调试Jar包,本文主要方便自己后续可以阅读。1…

2026/7/28 17:34:54 阅读更多 →
计算机毕业设计之Java景区失物招领系统

计算机毕业设计之Java景区失物招领系统

当下社会,信息技术充斥社会各个领域,已融入人们生活的点滴,日常中人们管理信息、办理业务、购买商品等都可以网络线上进行,快速而又便利,特别是随着移动互联网时代的到来,更是让人们随时享受着网络给带来的…

2026/7/28 17:34:54 阅读更多 →
计算机毕业设计之Java公司人力资源管理系统

计算机毕业设计之Java公司人力资源管理系统

当下社会,信息技术充斥社会各个领域,已融入人们生活的点滴,日常中人们管理信息、办理业务等都可以网络线上进行,快速而又便利,特别是随着移动互联网时代的到来,更是让人们随时享受着网络给带来的前所未有的…

2026/7/28 17:34:54 阅读更多 →
如何在5分钟内为《杀戮尖塔》安装ModTheSpire:终极模组加载器指南

如何在5分钟内为《杀戮尖塔》安装ModTheSpire:终极模组加载器指南

如何在5分钟内为《杀戮尖塔》安装ModTheSpire:终极模组加载器指南 【免费下载链接】ModTheSpire External mod loader for Slay The Spire 项目地址: https://gitcode.com/gh_mirrors/mo/ModTheSpire 还在为《杀戮尖塔》的重复玩法感到厌倦吗?想要…

2026/7/28 17:34:54 阅读更多 →
计算机毕业设计之Java高校助奖学金管理系统

计算机毕业设计之Java高校助奖学金管理系统

如今,在科学技术飞速发展的情况下,信息化的时代也已因为计算机的出现而来临,信息化也已经影响到了社会上的各个方面。它可以为人们提供许多便利之处,可以大大提高人们的工作效率。随着计算机技术的发展的普及,各个领域…

2026/7/28 17:34:54 阅读更多 →
NBM5100A评估板与PIC18F97J94的物联网低功耗设计

NBM5100A评估板与PIC18F97J94的物联网低功耗设计

1. NBM5100A评估板的核心功能解析NBM5100A/B评估板是安世半导体(Nexperia)推出的一款专为纽扣电池和锂亚硫酰电池设计的电池寿命增强解决方案。这款评估板的核心价值在于解决了物联网设备中常见的两大痛点:电池续航时间短和瞬时电流供应不足。在实际应用中&#xff…

2026/7/28 17:33:53 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻