说说 java 中常见的集合类
本文介绍了Java集合框架的核心接口(Collection、List、Set、Map)及其常见实现类。图示展示了类间关系,重点解析ArrayList、LinkedList、HashSet、HashMap等实现原理与性能特点,并指出线程安全及进阶特性,助你掌握集合体系关键知识点。
聚簇索引及其优缺点
聚簇索引是一种数据存储方式,InnoDB通过主键构建B+树组织数据,叶子节点即数据页。若无主键,则选非空唯一索引或隐式创建主键。辅助索引(二级索引)需两次查找:先查主键值,再查数据行。优点是查询快,尤其主键排序与范围查询;缺点是插入依赖顺序,更新主键代价高,且易引发页分裂。
动态数组代码实现
本文介绍动态数组的基本实现,涵盖增删查改及自动扩缩容机制:容量满时扩容2倍,元素过少时缩容一半。重点解析索引越界检查、内存泄漏防范(如置null避免引用残留)等关键细节,并对比插入与访问时的索引合法性差异,帮助理解底层原理。
双指针技巧秒杀七道数组题目
本文介绍双指针技巧在数组和链表中的应用,重点解析快慢指针如何实现原地修改。通过LeetCode经典题如删除有序数组/链表重复项,展示如何用慢指针记录结果、快指针遍历数据,高效完成去重,时间复杂度O(N),避免频繁数据搬移。
哈希表核心原理
哈希表不等于Map。Map是键值映射的接口,哈希表是其实现之一。本文详解哈希表原理:通过哈希函数将key映射到数组索引,实现O(1)增删查改;探讨哈希冲突的拉链法与线性探查法、负载因子与扩容机制,并澄清常见误区如遍历顺序无序、循环中修改风险等。
用拉链法实现哈希表
本文详解哈希表中拉链法的实现原理,通过简化版到完整版代码,介绍如何用链表解决哈希冲突。支持泛型、动态扩容缩容、键值增删查改及遍历所有key,结合Java内置LinkedList优化实现,直观展示哈希表核心机制。
二叉树基础及常见类型
二叉树是数据结构的核心,不仅是红黑树、堆、图等的基础,更体现了递归思维。掌握二叉树,等于掌握算法与数据结构的关键。本文详解满二叉树、完全二叉树、二叉搜索树及其实现方式,助你彻底理解其原理与应用,为后续算法学习打下坚实基础。
链表(链式存储)基本原理
本文介绍链表的基本概念与操作,对比力扣中的单链表与编程语言标准库中更复杂的双链表。链表通过指针连接分散的内存块,支持高效增删,无需连续空间和扩容,但不支持随机访问。文中详解单链表的创建、遍历、头尾及中间插入等操作,并简述双链表优势。
学习数据结构和算法的框架思维
本文系统总结数据结构与算法本质:所有数据结构皆源于数组和链表,核心操作为遍历与访问;算法本质是穷举,关键在于无遗漏、无冗余。文章提炼出通用框架,帮助读者建立计算机思维,掌握高效解题方法,适合初学者建立全局观,也适合进阶者温故知新。