![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构 - java
文章平均质量分 94
细节狂魔
Dark And Grey
Java领域高质量创作者
展开
-
Sequential And Linked Lists - 顺序表 和 链表 - 单向链表部分 - java(图文并茂,你值得一看)
文章目录回顾 和 链表接下来我们来通过代码 来认识链表1 准备工作2 根据 前面 所说的,根据节点的特性写一个类3. new 节点我们已经知道怎么实例化一个节点,但是我们又怎么做,才能知道下一个节点的地址呢?我先来把前面的东西讲清楚。链表的头引用 head理解链表中: 带头、不带头、单向、双向、循环、不循环的意思。带头 和 不带头循环 和 不循环单向 和 双向至此 我们将链表的结构 全部分析完了。接下来,我会以代码的形式 来带你们认识 链表。以穷举的方式 创建一个链表 (这方法很low,不建议去这样写,现在原创 2021-11-06 00:26:52 · 2427 阅读 · 30 评论 -
Collection Framework And The Data Structure BehindIt - 集合框架即背后的数据结构 - Java - 细节狂魔
文章目录首先了解集合框架,数据结构 是什么?在看来一下,java集合框架的客观观点解析类和接口总览 与 详解首先了解集合框架,数据结构 是什么?集合框架,我们可能还不了解。但是数据结构,想比大家都有一定的了解:数据结构就是 描述和组织数据的一种方式。在我们学习中,所知道 的 二叉树,栈,队列等这些,在Java中都被封装起来了。也就是说以后用的时候,在Java中不用我们自己去实现栈,列表,顺序表等操作,直接使用Java中写好的。直接拿过来用就对了。那么集合框架的集合其实就是Java写好的一些数据结原创 2021-12-02 20:40:11 · 2294 阅读 · 33 评论 -
List 接口相关知识 - ArrayList数据结构 - Java - 细节狂魔(估摸着有几万字)
文章目录泛型的引入实现一个通用的顺序表(直接实践)准备工作,相信大家都看得懂。开始敲泛型的引入 泛型在上篇文章集合框架即背后的数据结构中已经降到了,而且用起来了。 实现一个通用的顺序表(直接实践)顺序表的功能不是重点,我们在这里只是粗略实现一下顺序表的功能,重点在泛型准备工作,相信大家都看得懂。class MyArrayList{ private int[] elem;// 建立数组 private int usedSize;// 有效元素个数 public原创 2021-12-09 00:35:41 · 2570 阅读 · 20 评论 -
Sequential And Linked Lists - 顺序表 和 链表 - 双向链表部分 - java
文章目录前言直奔主题:单向链表 和 双向链表 的 数据结构(下面是不带头的)双向链表的好处节点删除,双向链表不需要借助前驱节点先来看单向链表是怎么来删除节点的再来看双向的废话不多说,实战中学习模拟实现双向链表(不带头)对双向列表的节点,进行抽象 ,写出一个类而对于 双向链表抽象出的类,它必须具有两个属性 head(头节点) 和 last(尾结点)因为 我们已经有了单链表的基础,所以一些简单功能我就直接放上来display 打印val值 功能contains 功能 - 确认是包含指定val数据size原创 2021-12-11 22:01:39 · 1181 阅读 · 13 评论 -
HashTable - 哈希表 - 细节狂魔
文章目录哈希表 / 散列表 的概念实践理解哈希表的运行原理由上面实践,我们得知了 哈希表 存在 哈希冲突的概念,下面我们讲讲 哈希冲突的概念 和 解决办法。冲突 - 概念冲突 - 避免冲突 - 避免 - 哈希函数的设计常见的哈希函数哈希表 / 散列表 的概念 顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。顺序查找时间复杂度为O(N),平衡树中为树的高度(log2 N),搜索的效率取决于搜索过程中元素比较的次数。理想的搜索方法:可以不原创 2022-02-27 01:43:27 · 9274 阅读 · 45 评论 -
栈 和 队列 【 Stack And Queue】- java - 细节决定一切
文章目录栈什么是栈?压栈 和 出栈什么是java虚拟机栈?什么是栈帧?栈的使用1.考入栈 和 出栈的顺序实战题 1实战题 2中缀表达式 转 后缀表达式【前缀暂时不涉及】中缀 和 后缀 表达式的表现形式中缀转后缀 和 中缀转前缀 的方法实战题 - [LeetCode - 150. 逆波兰表达式求值](https://leetcode-cn.com/problems/evaluate-reverse-polish-notation/)解题思维在看代码之前,我们需要知道 栈 Stack ,该怎么样创建,具原创 2022-01-19 23:00:07 · 1735 阅读 · 50 评论 -
学习二叉树 这一篇就够了 - java
文章目录什么是树?树形结构的概念重要概念树的表示形式树的应用二叉树概念总结两种特殊的二叉树二叉树性质什么是树?树形结构的概念 树是一种非线性的数据结构,它是由n(n>=0)个优先节点组成一个具有层次关系的集合。把它叫作树,是因为它看起来像一棵树,也就是说它是根朝上,而叶朝下。它具有以下特点:1、有一个特殊的结点,称为根结点,根节点没有前驱结点2、除根结点外,其余结点被分成 M (M > 0) 个互不相交的集合 T1、 T2、…、 Tm,其中每一个集合 Ti(1 <= i原创 2022-01-31 20:57:15 · 1977 阅读 · 33 评论 -
Common Sort - 常见的几种排序 与 不常见的几种排序 - Java - 细节狂魔
文章目录排序概念稳定性(重要)应用 - 举例1.、各大商城的价格从低到高等2、中国大学排名常见的排序算法(7 种)- 总览直接插入排序模拟实现 - 插入排序稳定性分析结论希尔排序排序概念 排序,就是使一串记录,按照其中的某个 或 某些关键字的大小,递增 或 递减 的 排列起来的操作。平时的上下文中,如果提到排序,通常指的是 排升序(非降序)。通常意义上的排序,都是指的原地排序(in place sort)原地排序:就是指在排序过程中不申请多余的存储空间,只利用原来存储待排数据的存储空间进行比较原创 2022-02-12 21:08:27 · 3996 阅读 · 64 评论 -
Map && Set,带你进入Java最常用到的两个接口 - 细节狂魔
文章目录搜索概念及场景模型纯 Key 模型Key - Value模型Map 的使用集合框架即背后的数据结构 - 简略概括图Map 的 说明Map 的常用方法说明实践搜索概念及场景 Map 和 Set 是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。以前常见的搜索方式有:1、直接遍历:时间复杂度O(N),元素如果比较多效率会非常慢2、二分查找,时间复杂度O(log2 N),但搜索前必须要求序列是有序的上述搜索比较适合静态类型的查找,即一般不会对区间进行插入和删除操原创 2022-02-24 00:44:54 · 1523 阅读 · 21 评论 -
Sequential And Linked Lists - 顺序表 和 链表 - 顺序表部分 - java
@[toc]YW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBARGFyayBBbmQgR3JleQ==,size_18,color_FFFFFF,t_70,g_se,x_16#pic_center)前言1. 顺序表和链表,都属于数据结构的一部分。2. 数据结构:C的数据结构 和 JAVA 的数据结构,有什么不一样? 数据结构 只是一个单独的学科。和语言没有关系。 语言的不同,只是决定了实现同一种逻辑的方法不同而已。3. 数据结构:逻辑非常严谨的一门学科原创 2021-11-03 23:38:52 · 1231 阅读 · 22 评论 -
Heap —— Priority Queue 【堆 / 优先队列】
前言 - 为堆的学习做准备二叉树的顺序存储 前面所讲的二叉树,什么孩子表示法呀,还有 孩子双亲表示法啊,都是链式存储。 而现在讲的是:顺序存储一棵二叉树。 存储方式 使用数组保存二叉树结构,方式即将二叉树用层序遍历的方式放入数组中。一般只适合表示完全二叉树,因为 非完全二叉树会有空间的浪费。【也就是说:如果使用顺序存储来存储一棵二叉树,那么,最好是完全二叉树,这样就不会有太多的空间被浪费】这种方式的主要用法就是堆的表示。 下标关系 已知双亲(parent)的下标,则:原创 2022-02-05 00:07:23 · 1756 阅读 · 34 评论 -
基础二叉搜索树 - java - 细节狂魔
文章目录概念直接实践准备工作:定义一个树节点的类,和二叉搜索树的类。搜索二叉树的查找功能搜索二叉树的插入操作。搜索二叉树 删除节点的操作 - 难点总程序 - 模拟实现二叉搜索树性能分析和 java 类集的关系概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:1、若它的左子树不为空,则左子树上所有节点的值都小于根结点的值。2、若它的右子树不为空,则右子树上所有节点的值都大于根结点的值。3、它的左右子树也分别为二叉搜索树 直接实践准备工作:定义一个树节点的类,原创 2022-02-24 23:21:55 · 1252 阅读 · 18 评论 -
Genericity - 泛型 - Java - 细节狂魔
文章目录前言什么是泛型?引出泛型代码示例结论由结论 引出 我们的泛型,将存在缺陷弥补。泛型初步结论:语法语法一语法二泛型类的使用语法类型推导(Type inference)裸类型(Raw Type)前半部分的概括小结泛型是如何编译的?擦除机制擦除机制的介绍泛型的上界语法示例实例复杂示例 - 比较接口实例 - 写一个泛型类,找出数组中的最大值泛型方法定义语法实例 - 非静态实例 - 静态泛型中的父子类关系通配符前言 对于泛型,我们的学习目的:看得懂就可以了。因为 泛型是 java 当中比较难的一块语法了原创 2022-02-21 19:45:49 · 2157 阅读 · 49 评论 -
InnerClass - 内部类 - java - 细节狂魔
文章目录内部类的分类本地内部类实例内部类什么地方会用到实例内部类?一个类 具有 内部类 的 字节码文件 - 了解在实例内部类中 包含与 外部类 属性名字相同的属性。那么如何在 实例内部类中访问?实例内部类 - 重要的几个点静态内部类如何实例化 静态内部类如何访问外部类的普通的成员变量。实例内部类 和 静态内部类,哪一个更好?匿名内部类重点掌握 : 实例内部类、静态内部类、匿名内部类。内部类的分类 1、本地内部类2、实例内部类3、静态内部类4、匿名内部类首先,我要在这声明一下,内部类也是类,不管原创 2022-02-25 21:50:31 · 989 阅读 · 19 评论 -
Java 对象 的 比较 - 细节狂魔
前言问题提出 在上篇文章Heap —— Priority Queue - 堆/优先级队列中,优先级队列在插入元素不能是null 或者 元素之间必须要能狗进行比较。为了简单起见,我们只是插入了 Integer 类型,那优先级队列中能否插入自定义的数据类型对象? 实践 通过实践,我们发现在没有指定 某种排序规则时,是无法将自定义类型入队的。至于 Comparable,可以参考这篇文章面向对象的编程(三个常用接口) 回顾关于 对象的比较来说:1、equals 方法,比较的是原创 2022-02-05 00:07:13 · 3332 阅读 · 17 评论 -
reflection - 反射 - 细节狂魔
文章目录反射的定义反射的用途 - 面试可能会问到反射的基本信息反射相关的类(重要)Class类(反射机制的起源 )Class类中的相关方法(重要)常用获得类相关的方法(重要)常用获得类中属性相关的方法(以下方法返回值为Field相关)(了解)获得类中注解相关的方法(重要)获得类中构造器相关的方法(重要)获得类中方法相关的方法反射示例获得Class对象的三种方式第一种,使用 Class.forName("类的全路径名"); 静态方法。 - 用的最多第二种,使用 .class 方法。第三种,使用类对象的 g原创 2022-02-28 22:43:27 · 906 阅读 · 19 评论 -
Use Of Enumerations - 枚举的使用 - Java - 细节狂魔
文章目录枚举的背景及定义优点场景本质:枚举类的创建实践调用枚举中的量switch 语句枚举类的常用方法values方法 - 以数组形式返回枚举类型的所有成员ordinal 方法 - 获取枚举成员的索引位置拓展valueOf() - 将普通字符串转换为枚举实例compareTo() - 比较两个枚举成员在定义时的顺序枚举的背景及定义 枚举是在JDK1.5以后引入的。主要用途是:将一组常量组织起来。在这之前表示一组常量通常使用定义常量的方式:public static int final RED原创 2022-03-01 17:00:30 · 889 阅读 · 11 评论 -
Lambda 表达式 - java - 细节狂魔
文章目录背景Lambda表达式的语法Lambda 表达式由三部分组成函数式接口注意定义方式实践 : 简写匿名类Lambda表达式的基本使用无返回值, 一个参数的函数式接口无返回值,多个参数有返回值,无参数有返回值,有一个参数有返回值,多个参数特殊用法:重写Comparator 的 比较规则。变量捕获实例 :匿名内部类 - 变量捕获实例 - Lambda的变量捕获总结Lambda在集合当中的使用Collection接口 - forEach() 方法演示List接口 - sort()方法的演示Map接口总结原创 2022-03-02 00:57:48 · 924 阅读 · 19 评论