java数据结构
文章平均质量分 93
用 Java 讲透基础:不绕晦涩概念,每个结构先结合 Java 集合框架实例,再手把手教你用 Java 语法手写实现(含类、接口、泛型应用)。
跟着 Java 节奏学:从数组、链表过渡到树、图,帮你把数据结构和 Java 语法练扎实。
那我掉的头发算什么
还是做不到吗……
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【数据结构】哈希表
哈希表是一种高效的搜索结构,通过哈希函数建立关键码与存储位置的映射关系,实现快速查找。哈希冲突无法完全避免,但可通过设计合理的哈希函数(如直接定制法、除留余数法)和调节负载因子来降低冲突率。解决冲突的方法包括闭散列(开放定址法)和开散列(链地址法)。开散列将冲突元素存储在链表中,形成哈希桶结构,有效提高了搜索效率。哈希表的实现需考虑扩容机制,以维持较低的冲突率。原创 2025-10-22 18:29:46 · 1021 阅读 · 0 评论 -
【数据结构】反射、枚举、lambda表达式以及补充知识
本文介绍了Java中的字符串常量池和反射机制。字符串常量池通过StringTable实现,能高效存储字符串字面量,使用常量串创建String对象比new更节省空间。通过intern方法可将字符串手动加入常量池。反射机制允许程序在运行时获取类的信息并动态操作对象,常用于框架开发和访问私有成员。反射相关类如Class、Method等提供了获取构造方法、字段和方法的能力。文中通过代码示例展示了三种获取Class对象的方式,并演示了使用反射调用方法和修改字段值的操作。这两种机制分别优化了字符串处理和增强了Java的原创 2025-10-22 18:28:45 · 1518 阅读 · 15 评论 -
【数据结构】TreeMap & TreeSet
本文介绍了二叉搜索树(BST)的概念和基本操作,包括查找、插入和删除。BST是一种有序二叉树,左子树节点值小于根节点,右子树节点值大于根节点。文章详细分析了删除操作的三种情况,并提供了Java实现代码。同时探讨了BST的性能问题,最优情况下时间复杂度为O(logN),最差退化为O(N)。此外,文章还介绍了搜索数据结构Map和Set的概念,区分了纯key模型和key-value模型,并说明Map接口存储唯一键值对的特点。最后提到Map.Entry内部类用于实现键值对的映射关系。原创 2025-10-13 16:38:36 · 1024 阅读 · 0 评论 -
【数据结构】树、二叉树
本文介绍了树与二叉树的基本概念、性质及应用。树是一种非线性数据结构,具有层次关系,包括根节点、子节点等概念。二叉树是树的特殊形式,每个节点最多有两个子节点。文章详细讲解了树和二叉树的术语定义、存储表示方法,以及两种特殊二叉树(满二叉树和完全二叉树)的性质。此外,还通过示例题目帮助理解相关概念。最后指出二叉树在程序实现中具有较高难度,为后续讲解具体实现和应用做铺垫。原创 2025-10-03 15:28:04 · 857 阅读 · 0 评论 -
【数据结构】初识泛型
Java泛型与包装类摘要 Java中的包装类为基本数据类型提供了对象表示,主要有Byte、Integer、Short、Long、Float、Double、Character和Boolean。通过装箱(valueOf)和拆箱(intValue)操作实现类型转换,JDK5后支持自动装箱拆箱。 泛型通过在类定义时使用类型参数(如<E>)实现类型安全,编译时采用擦除机制转为Object。使用时需指定具体类型(如MyArray<Integer>),且只接受类类型。泛型上界(如<E ext原创 2025-09-12 15:29:26 · 932 阅读 · 0 评论 -
【数据结构】java对象的比较
Java中对象的比较方法主要有三种:1)覆写Object类的equals方法,用于简单的内容比较;2)实现Comparable接口的compareTo方法,实现对象间的大小比较;3)自定义Comparator比较器,提供更灵活的比较方式。文章以扑克牌为例,展示了如何通过这三种方式实现对象比较,并分析了优先级队列插入自定义对象时需实现比较逻辑的问题。特别指出Comparable是对象自身比较,Comparator是独立比较器,两者适用不同场景。原创 2025-10-09 21:19:00 · 641 阅读 · 0 评论 -
【数据结构】栈和队列
该博客围绕栈与队列这两种基础数据结构展开,先介绍栈遵循 “后进先出(LIFO)” 原则、仅栈顶可执行压栈 / 出栈操作及基于数组的模拟实现,队列遵循 “先进先出(FIFO)” 原则、需通过 LinkedList 实例化 Queue 接口及基于双向链表的模拟实现,再讲解基于数组、用 “保留一个位置” 区分空满的循环队列,以及支持两端操作、可灵活作栈 / 队列的双端队列(Deque),还提供用两个队列实现栈、两个栈实现队列的 Java 解法,最后强调二者是算法与编程基石,广泛应用于编译器设计等领域。原创 2025-09-21 14:14:03 · 987 阅读 · 2 评论 -
【数据结构】顺序表,ArrayList
ArrayList是Java集合框架中动态数组的实现类,支持随机访问、克隆和序列化。本文深入探讨了ArrayList的使用方法,重点分析了三种构造方法,特别说明了通过集合创建新列表的机制。此外,文章详细介绍了ArrayList的常见操作,包括remove方法的两种使用方式(按索引删除和按元素删除)以及subList方法的截取特性。最后指出ArrayList与Vector不同,是非线程安全的,适合单线程环境下使用。原创 2025-09-17 18:30:40 · 1314 阅读 · 0 评论 -
【数据结构】优先级队列(堆)
本文介绍了优先级队列的概念及其底层实现原理。优先级队列是一种特殊的队列,其中元素按优先级出队,而非插入顺序。文章重点讲解了堆这种数据结构,它是优先级队列的核心实现方式。堆是一种完全二叉树,分为大根堆和小根堆两种形式。通过数组存储和向下调整算法,可以高效地构建堆结构。此外,文章详细分析了堆的创建、插入和删除操作的时间复杂度,并提供了Java代码实现示例。堆的插入采用向上调整策略,而删除操作则涉及元素交换和向下调整。这些操作的时间复杂度均为O(logN),保证了优先级队列的高效性。原创 2025-10-09 17:08:16 · 930 阅读 · 0 评论 -
【数据结构】二叉树的遍历与操作
本文主要讲了二叉树遍历的所有知识以及一些基础简单的操作原创 2025-10-03 16:57:04 · 980 阅读 · 0 评论 -
【jdk】JDK17语法新增特性
JDK 17作为长期支持版本,整合了多项实用新特性:yield关键字简化switch返回值;var实现类型自动推断;增强空指针异常定位;密封类(sealed)精确控制继承;接口支持私有方法封装逻辑;instanceof支持模式匹配一步转型。这些特性显著提升代码简洁性和安全性,与Spring Boot 3.0等主流框架深度适配,是企业级开发的优选版本。开发者应重点掌握yield、var、密封类等核心语法,结合代码示例快速迁移至JDK 17环境。原创 2025-09-12 15:29:54 · 840 阅读 · 4 评论 -
【数据结构】单向无头非循环链表
摘要:本文介绍了链表的基本概念及实现。链表是一种非连续的存储结构,通过节点间的引用链接实现逻辑顺序。重点讲解了无头单向非循环链表的特点和实现方法,包括头插法、尾插法、任意位置插入、查找、删除等操作。通过Java代码示例展示了单向链表的完整实现,并与ArrayList进行对比,指出链表更适合频繁插入删除的场景。原创 2025-09-20 10:23:23 · 1256 阅读 · 1 评论 -
【数据结构】排序
本文介绍了常见的排序算法及其实现。首先解释了排序的基本概念,包括稳定性、内部排序和外部排序的定义。然后详细介绍了四种经典排序算法:直接插入排序(通过逐个插入元素构建有序序列,时间复杂度O(N²))、希尔排序(基于分组插入的优化算法,时间复杂度约O(n^1.25))、直接选择排序(每次选择最小/最大元素,时间复杂度O(N²))和堆排序(利用堆结构的选择排序,适合大数据量)。每种算法均附有Java实现代码,并分析了其时间复杂度、空间复杂度和稳定性特点。文章重点比较了不同排序算法的适用场景和性能差异,为选择合适的原创 2025-10-13 15:52:05 · 830 阅读 · 0 评论 -
【数据结构】二叉树的高频热门面试题大全
本文总结了二叉树相关的热门面试题目,包括翻转二叉树、判断两棵树是否相同、对称二叉树、子树判断、平衡二叉树和最近公共祖先等问题。通过递归方法实现这些功能,文中提供了详细的Java代码示例,并对平衡二叉树的两种解法进行了时间复杂度分析。文章还给出了每道题目对应的LeetCode原题链接,方便读者自行练习。这些题目涵盖了二叉树的基本操作和常见考点,适合准备算法面试的读者参考学习。原创 2025-10-03 17:44:31 · 1027 阅读 · 0 评论 -
【数据结构】List接口的认识和顺序表初阶
本文介绍了顺序表的基本概念及其在Java中的实现。顺序表是线性表的一种实现方式,通过数组存储数据元素,支持增删查改操作。文章详细讲解了List接口及其常见方法,并自定义实现了MyArrayList类,包含add、remove、contains等核心功能。实现过程中考虑了数组扩容、边界检查等细节,通过异常处理确保程序健壮性。该实现可作为理解ArrayList底层原理的基础,帮助初学者掌握顺序表的核心思想和实现方法。原创 2025-09-17 17:20:41 · 397 阅读 · 0 评论 -
【数据结构】时间复杂度和空间复杂度
算法效率分析包括时间复杂度和空间复杂度。时间复杂度衡量算法运行速度,空间复杂度衡量额外存储需求。随着计算机存储能力提升,空间复杂度关注度降低。时间复杂度使用大O表示法,通过计算基本操作次数并进行简化(保留最高阶项、去除常数系数)得到。递归算法的时间复杂度=递归次数×每次操作次数。空间复杂度同样采用大O表示法,重点关注临时变量和递归调用产生的栈帧数量。典型案例如冒泡排序O(n²)和递归O(n)的空间复杂度。分析时应关注最坏情况,如数组搜索为O(n)。原创 2025-09-10 18:43:53 · 983 阅读 · 4 评论 -
【数据结构】双向链表
摘要 LinkedList是基于双向链表实现的集合类,具有高效的插入和删除操作(时间复杂度O(1)),但不支持随机访问。它实现了List接口,适合需要频繁增删的场景。构造时可通过Collection子类初始化,常用方法包括头插/尾插、任意位置插入、查找、删除元素等。通过模拟实现双向链表类(包含节点类ListNode),展示了核心方法的实现逻辑,如addFirst、addLast、remove等操作,体现了链表通过引用来连接节点的特性。原创 2025-09-20 15:05:57 · 1333 阅读 · 0 评论
分享