![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 79
Master_hl
每一种热爱都值得全力以赴~
展开
-
final 修饰的变量一定不能被修改?一定能被修改?
为啥前面修改 final String 还好好的,只不过编译器做了优化,导致它的指向并没有被改变,而到 final Integer 就直接报错了?以上两种情况,代码都会报错,所以 final 修饰的局部变量是不允许被修改的!成员变量的值,这种修改在实际应用中可能不会如预期那样生效。变量的引用不会直接导致编译错误,但修改后的结果可能不会被反映出。,编译器在编译时可能会对值进行优化,使得直接修改变得不现实。变量的引用,实际的编译器优化可能会防止这种修改生效。此处通过反射来获取值,确实看到修改了,只不过。原创 2024-08-22 13:18:39 · 709 阅读 · 0 评论 -
什么是 SPI ? 它有哪些使用场景 ?
什么是 SPI ? 它有哪些使用场景 ?原创 2023-08-11 11:27:36 · 347 阅读 · 0 评论 -
Map和Set,简单模拟实现哈希表以及哈希表部分底层源码的分析
Map和Set详解原创 2022-07-10 22:37:58 · 297 阅读 · 2 评论 -
LeetCode-归并排序链表
归并排序链表的两种实现方式---递归/迭代原创 2022-07-02 00:16:42 · 782 阅读 · 10 评论 -
LeetCode-对链表进行插入排序
链表的插排~原创 2022-06-29 22:49:56 · 247 阅读 · 0 评论 -
LeetCode-车队
不只是王者有车队,力扣也有,,,原创 2022-06-28 01:00:58 · 266 阅读 · 4 评论 -
哈希表的前置知识---二叉搜索树
本期给大家带来一篇哈希表的前置知识--二叉搜索树,希望能帮助大家!!!原创 2022-06-26 00:14:47 · 384 阅读 · 10 评论 -
《数据结构》之八大排序
八大排序---结合基本思想,代码,图解,重点分析,进行详细讲解!!原创 2022-06-06 21:25:06 · 1399 阅读 · 16 评论 -
PriorityQueue的介绍,底层重要源码的分析,以及PriorityQueue的应用
目录1.PriorityQueue接口的介绍2.PriorityQueue底层源码的分析3.PriorityQueue的应用1.PriorityQueue接口的介绍1.1.PriorityQueue的特性1.PriorityQueue中放置的元素必须要能够比较大小,不能插入无法比较大小的对象,否则会抛出ClassCastException异常 2. 不能插入null对象,否则会抛出NullPointerException,而Queue是可以插入null的.原创 2022-05-31 01:03:03 · 1247 阅读 · 13 评论 -
Java实现优先级队列--堆
目录1.优先级队列和堆的概念2.优先级队列的实现1.优先级队列和堆的概念1.1.什么是优先级队列??我们都学过队列,队列是一种先进先出的数据结构,但有些情况下,操作的数据可能带有优先级,一般出队列时,可能需要优先级高的元素先出队列,这就是优先级队列。比如有时候我们在打游戏的时候,别人打电话给你,那么系统一定是先处理打进来的电话。1.2.什么是堆??简言之,堆其实就是一棵完全二叉树,它的底层是一个数组,数组中存储这棵完全二叉树层序遍历的结果,按种类分,它又分为大根堆和小根堆,请看下原创 2022-05-29 23:13:48 · 1314 阅读 · 15 评论 -
二叉树--经典面试题2
二叉树重要面试题原创 2022-05-28 22:20:51 · 941 阅读 · 0 评论 -
二叉树--经典面试题1
目录1.检查两棵树是否相同2.另一棵树的子树3.判断一棵二叉树是否是平衡二叉树4.对称二叉树原创 2022-05-27 20:08:48 · 1147 阅读 · 8 评论 -
二叉树的基操
1.二叉树的创建快速掌握为叉树的基本操作,这里只是创建一颗简单的二叉树,并不是二叉树的真正创建方式;后期会讲解二叉树的真正创建方式。public class BinaryTree { public static class TreeNode { public char val; public TreeNode left; public TreeNode right; public TreeNode(char val) {原创 2022-05-24 20:56:44 · 807 阅读 · 2 评论 -
二叉树的相关性质和特点
目录树型结构 二叉树1.树型结构1.1.树的概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。结点的度:一个结点含有子树的个数称为该结点的度; 如上图:A的度为6 树的度:一棵树中,所有结点度的最大值称为树的度; 如上图:树的度为6 叶子结点或终端结点:度为0的结点称为叶结点; 如上图:B、C、H、I...等节点为叶结点 双亲结点或父结点:若一原创 2022-05-23 23:13:30 · 2375 阅读 · 0 评论 -
Java实现队列以及队列的相关面试题
目录JAVA实现队列 队列的经典题目1.JAVA实现队列1.1.概念队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的特点:进行插入操作的一端称为队尾(Rear)出队列:进行删除操作的一端称为队头(Front)因为Queue是一个接口,所以不能自己实例化,所以需要通过链表和数组两种方式来实现它,,,链表实现(较简单):public class MyLinkedList { static class Node { .原创 2022-05-22 18:01:21 · 1171 阅读 · 0 评论 -
Java实现栈以及栈的相关面试题
目录JAVA实现栈 栈的经典题目1.JAVA实现栈栈是一种特殊的线性表,只允许在固定的一端进行插入和删除元素操作。简言之就是出栈和入栈都是在栈顶进行操作,因为其底层是一个数组,所以实现会非常简单,我就不多赘述了,看代码:public class MyStack<E> { public int usedSize; public E[] elem; public static final int DEFAULT_SIZE = 5; public M原创 2022-05-19 21:38:00 · 661 阅读 · 0 评论 -
10道经典链表面试题
目录1.删除链表中等于给定值val的所有节点2.反转一个单链表3.给定一个带有头结点head的非空单链表,返回链表的中间结点。如果有两个中间结点,则 返回第二个中间结点4.输入一个链表,输出该链表中倒数第k个结点5.将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所 有节点组成的6. 编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的 结点之前7. 链表的回文结构8. 输入两个链表,找出它们.........原创 2022-05-18 18:05:09 · 3842 阅读 · 17 评论 -
扑克牌&杨辉三角(ArrayList)
1.扑克牌简单描述一下实现过程:1.买牌;2.洗牌;3.三个人揭牌,一人揭一张,揭五轮我们要做到的一个实现效果如下:买牌:首先我们得有牌这个类card,然后有花色,有值,然后提供对应的构造方法,和toString方法,对属性可以进行封装等等,,class Card{ private String suit; private Object rank;//扑克牌有两种类型值,1-10和j-A,所以设成Object类型 public Card(Strin原创 2022-05-17 16:16:26 · 685 阅读 · 2 评论 -
Java实现单链表
目录单链表的实现 ArrayList的缺陷和与单链表的区别1.单链表的实现首先我们和ArrayList一样,将MySingleList单独定义为一个Java文件,然后每一个结点我们将它定义成一个静态内部类,这样就方便我们访问结点的成员,,还是和ArrayList一样,我们再定义一个Test类用来测试我们的单链表,写一个函数可以测试一下,这样在最后就不会眼麻手乱了,,无头单向非循环链表的实现:1.1MySingleList的大概实现框架public class MySingleLis原创 2022-05-16 12:20:43 · 4653 阅读 · 1 评论 -
Java实现顺序表
目录集合框架 ArrayList1.集合框架在实现顺序表之前我想先简单介绍一下集合框架,因为先了解这一块的框架,我们才会有目的性的,有方向感的去学习每一个数据结构,自己学了多少让自己心里也有个谱。1.1.那什么是集合呢?Java 集合框架 (Java Collection Framework),又被称为容器 (container),是定义在 java.util 包下的一组接口和其实现类,它的主要表现为对单元中的元素进行增删查改操作(CURD)。类和接口总览1.2...原创 2022-05-13 19:55:08 · 994 阅读 · 0 评论 -
集合的前奏---泛型
☕目录☕🍗什么是泛型 🍗引出泛型 🍗泛型类的语法 🍗裸类型 🍗泛型如何编译的 🍗泛型的上界 🍗泛型方法 🍗通配符 🍗包装类1.什么是泛型???1.1泛型是在JDK1.5引入的新的语法,通俗讲,泛型:就是适用于许多许多类型。从代码上讲,就是对类型实现了参数化。 看到标红的这句话,有些兄弟可能会有疑惑,我们以前传参,传得是一个整形数据,传得是一个引用,我从来没传过类型嘛,类型难道还能作为参数传递???对,没错,接下来,我们就来看一下类型作为参数传递的实现方式,,,...原创 2022-05-09 01:01:58 · 1262 阅读 · 35 评论 -
刨析Comparable/Comparator/Clonable三个重要的接口
目录接口一 :Comparable 接口二 :Comparator 接口三 : Clonable1.Comparable这个接口是用来给对象数组来排序的在我学接口之前我用的排序方法是Arrays.sort(),我发现单单靠之前所学知识并不能解决给对象数组排序的问题,后来学习过程中发现Comparable这一接口解决了我的疑惑,也感受到了这一接口的强大之处,但这也不是最好的,后续会说到,毕竟学知识是个循序渐进的过程嘛,,,首先,我们看一下我们之前学习时用的Arrays.sort,...原创 2022-05-04 21:00:47 · 1112 阅读 · 18 评论 -
抽象类和接口--(语法和特性)
目录抽象类的语法和特性 接口的语法和特性1.抽象类的语法和特性1.1.语法1.在Java中,一个类如果被abstract 修饰称为抽象类,抽象类中被 abstract 修饰的方法称为抽象方法,抽象方法不用给出具体的实现体。 // 抽象类:被abstract修饰的类public abstract class Shape { // 抽象方法:被abstract修饰的方法,没有方法体 abstract public void draw(); abstract原创 2022-05-04 09:48:39 · 148 阅读 · 1 评论 -
多态使代码高大上
目录多态的扩展能力极强 多态能降低圈复杂度1.扩展能力极强class Shape { public void draw() { System.out.println("画图形!"); }}class Cycle extends Shape{ @Override public void draw() { System.out.println("●"); }}class Rect extends Shap.原创 2022-05-03 21:33:10 · 234 阅读 · 0 评论 -
代码实现发邮件---sendemails
本文只给出实现代码和每一步的步骤,具体哪一步是为什么,以及实现思路,不作解释。 ------别问,问就是我能力不够首先我们看一下代码的实现效果:我这里发邮件给自己是为了验证程序是否能正常运行,当然你们也可以发给你们的朋友,恶搞一下,可以改一下qq头像或昵称呀,但是玩归玩,不要闹得太过分哈哈。下面我们来看具体实现需要哪些步骤:...原创 2022-04-19 20:15:29 · 1499 阅读 · 0 评论 -
JAVASE总结篇---图书系统
思路:1.首先得有图书,书架;2.其次就是用户,用户又分为普通用户和管理员;3.最后就是用户对书架中的图书的一些操作。所以我们需要建三个包。book---Book,BookList user---AdminUser,NormalUser,User operation---(AdminUser):FindOperation,AddOperation,DelOperation,DisOperation,ExitOperation (NormalUser):FindOperatio..原创 2022-04-17 22:52:32 · 542 阅读 · 2 评论 -
深度刨析2--类和对象
目录面向对象篇面向对象 封装 继承 多态1.面向对象1.1.什么是面向对象? 面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情;人们常说的OOP思想就是面向对象思想。用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。1.2.面向对象与面向过程假如你要买手机:1.面向过程的买手机方式:注重的是买手机的过程,少了一个环节可能都不行按照该种方式来写代码,将来扩展或者维护起来会比较麻烦。 ...原创 2022-04-14 00:33:34 · 311 阅读 · 2 评论 -
深度刨析1--类和对象
目录类的定义和使用 对象的构造和初始化 包 代码块 内部类 访问修饰限定符 面向对象--继承、封装、多态1.类的定义和使用1.1.如何定义一个类?class 加类名;定义类名:大驼峰1.2.如何使用类?类中有成员变量(也叫字段或属性)和成员方法成员变量定义在类中,方法的外边idea改主类名:鼠标点住这个类,右击选择refactor --> rename成员变量没有赋初值的时候,每个成员变量都是它所对应的0值引用类型对应的0值:null..原创 2022-04-07 00:11:09 · 328 阅读 · 0 评论 -
Java -- 递归实现 -- 青蛙跳台阶
青蛙跳台阶 抽象出的实现思路(递归思想:一般看第n项和第n-1项的关系) 1)n==1时:有1种跳法n==2时:有2种跳法n==3时:有3种跳法n==4时:有4种跳法2)当n>2时,第一次跳的时候就有两种不同的选择:一是第一次仅仅跳1级,此时跳法数目等于后 面剩下的n-1级台阶的跳法数目,即为f(n-1);3)还有一种选择是第一次跳2级,此时跳法数目等于后面剩下n-2级台阶的跳法数目,即为f(n-2); 过程图解 代码实现 public .原创 2022-03-19 20:39:22 · 612 阅读 · 0 评论 -
Java -- 递归实现--汉诺塔问题
汉诺塔 抽象出实现的步骤(递归思想:一般看第n项和第n-1项的关系) 1)将n-1块从A以C为临时柱移到B2)此时就将第n块移动到终点柱C3)然后把此时处在B的那n-1块借A移动到C 移动次数公式 整个过程将n-1块整体移动了两次,加上第n块自身移动了一次 Hanoi(n) = 2Hanoi(n-1)+1 过程图解 代码实现 ...原创 2022-03-17 23:32:59 · 420 阅读 · 0 评论