- 博客(54)
- 收藏
- 关注
原创 Java基础-----集合类(四)
1.Iterator 可以遍历List集合,也可以遍历Set集合;ListIterator只能遍历List集合2.Iterator 只能单向遍历(向后遍历),ListIterator双向遍历(向前/向后遍历)3.ListIterator继承Iterator接口,添加新的方法。
2024-01-03 16:24:52
1112
原创 Java基础-----集合类(二)
文章目录1. 泛型简介2. 使用泛型的好处3.使用泛型3.1 泛型类3.2 泛型接口3.3 泛型方法4 泛型的通配符4.1 <?>:无边界的通配符4.2 <? extends E>:固定上边界的通配符4.3 <? super E>:固定下边界的通配符5.总结今天主要学习泛型1. 泛型简介在我们自定义的集合类中,底层是Object类型的数组,在设计和声明时,不能确定这个容器里到底要存储什么类型的数据。从JDK5版本之后,引入一个新的特性----泛型,提供了
2024-01-03 16:24:25
1160
原创 Java基础-----集合类(一)
集合和数组一样,都是用来存储多个数据的结构,也可以称作容器。数组长度是不可变化的,一旦在初始化数组时指定了数组长度,这个长度就不可变。如果需要处理数量变化的数据,数组就无法实现;而且数组也没有办法保存有映射关系的数据(例如:语文-90分,数学-80分)。为了保存数量不确定的数据,以及具有映射关系的数据,提供了集合类。集合类主要负责保存、盛装 其他数据。所有的集合类都在java.util包下,提供了一个表示和操作对象集合的统一架构,包含了大量的接口和类,并且包含了这些接口和实现类的操作算法和数据结构。
2024-01-03 16:03:56
528
原创 Java基础-----Date类及其相关类(一)
java.util.Date:表示指定的时间信息,不支持国际化现在这个类的许多方法已经过时,一旦进入到多线程处理时,Date类就会出现许多问题,所以很多时候我们不太使用这个类,但是我们还是简单学习了解一下。从上图中我们可以看到,Date类中的许多方法已经被弃用,下面我们来学习一下常见的方法。DateFormat 类是对日期类进行格式化和解析DateFormat 类本身是一个抽象类DateFormat 类实例化的方式:一种是通过静态方法的调用一种是通过创建子类对象。
2023-12-03 08:26:42
988
原创 Java基础-----Math类相关的API(一)
Math类中提供了大量用于数学运算的相关方法Math类是使用final修饰的终结类,不能产生子类Math类中的方法都是static修饰的静态方法,可以通过类名.方法名直接调用java.util下有一个Random类,根据随机算法的起源数字(种子)进行一些迭代变化,来产生随机数。虽然Random类产生的数字是随机的,但在相同种子数下的相同次数产生的随机数是相同的(伪随机)。BigInteger可以支持任意长度的整数BieDecimal可以支持任意精度的浮点数。
2023-12-02 10:46:20
1129
原创 Java基础-----Math类相关的API(二)
Enum枚举:就是我们所说的 列举,从给定的值中列举,通常都是有固定值,只能从固定值中去做选择。比如:商品有入库IN和出库OUT状态;性别有男女之分;一周有周一到周日等等可列举的。
2023-12-02 10:45:58
1053
原创 【代码随想录刷题】二叉树01~05总结
第一次在二叉树中接触到回溯,关于本题的详解可以看一下卡哥的视频,视频讲解的很清楚。对于二叉树是否对称,要比较的是根节点的左子树与右子树是不是相互翻转的。(这两个树是根节点的左右子树),所以在递归遍历的过程中,也是要同时遍历两棵树。的路径,这条路径上所有节点值相加等于目标和 targetSum。我们需要比较的是两个子树的里侧和外侧的元素是否相等。这天深入学习了二叉树节点的深度和二叉树节点的高度。最后用二叉树的前序、后序、中序遍历来练手。,这道题目需要检查这棵二叉树是否对称。从这天开始学习了二叉树的内容。
2023-12-01 09:01:33
1117
原创 【代码随想录刷题】Day20 二叉树06
此题与【106】从中序与后序遍历序列构造二叉树解题思路是一样的。此题的详细解题思路请看【代码随想录刷题】Day18 二叉树05。注意类似用数组构造二叉树的题目,每次分隔尽量不要定义新的数组,而是通过下标索引直接在原数组上操作,这样可以节约时间和空间上的开销。递归函数前面加if的情况:一般情况来说:如果让空节点(空指针)进入递归,就不加if,如果不让空节点进入递归,就加if限制一下, 终止条件也会相应的调整。其实这就是不同代码风格的实现。
2023-12-01 09:01:00
1078
原创 【代码随想录刷题】Day18 二叉树05------延伸题目练习
给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有。此题要遍历整个树,找到所有路径,所以递归函数不要返回值。路径总和等于给定目标和的路径。是指没有子节点的节点。
2023-11-26 18:04:43
511
原创 【代码随想录刷题】Day17 二叉树04
【110】平衡二叉树给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。提示:做这道题目时,我们需要再明确一下二叉树节点的深度和高度参数:当前传入节点返回值:以当前传入节点为根节点的树的高度明确终止条件递归的过程中依然是遇到空节点了为终止,返回0,表示当前节点为根节点的树高度为0明确单层递归的逻辑如何判断以当前传入节点为根节点的二叉树是否是平衡二叉树呢?当然是其左子树高度和其右子
2023-11-22 09:35:05
1400
原创 【代码随想录刷题】Day16 二叉树03
二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数或者节点数(取决于深度从0开始还是从1开始)二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数或者节点数(取决于高度从0开始还是从1开始)前序求深度,后序求高度。
2023-11-22 06:39:15
1351
原创 【代码随想录刷题】Day15 二叉树02------延伸题目练习
给你两棵二叉树 root 和 subRoot。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true;否则,返回 false。二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
2023-11-21 15:47:01
293
原创 Java基础-----StringBuffer和StringBuilder
一个是常量,一个是变量。String是一个final修饰的终结类,不能产生子类,是使用final的byte数组来存储值,所以一旦创建不能改变。如果疆场对字符串进行修改、删除或者插入操作,建议使用StringBuffer效率更高。StringBuild的方法,没有synchronized修饰,非线程安全的。案例:判断从键盘接收一行文字,是否是回文 例如:abcba。比较String和StringBuffer的效率。一个是有线程安全的,一个是非线程安全的。StringBuffer的方法,都有。
2023-11-21 06:32:12
572
1
原创 Java基础-----正则表达式
又叫做规则表达式。是一种文本模式,包括普通字符和特殊字符(元字符)。正则使用单个字符来描述、匹配一系列某个句法规则的字符串,通常用来检索、替换符合某个模式(规则)的文本。
2023-11-21 06:31:25
385
原创 Java基础-----String类
String不是基本数据类型,是一种引用类型String代表一组不可改变的Unicode字符序列。String类对象的内容一旦被初始化,不能再改变String类是final修饰的终结类,不能产生子类。
2023-11-20 19:36:20
225
原创 【代码随想录刷题】栈与队列总结
其实就是一个披着队列外衣的堆,因为优先级队列对外接口只是从队头取元素,从队尾添加元素,再无其他取元素的方式,看起来就是一个队列。而且优先级队列内部元素是自动依照元素的权值排列。那么它是如何有序排列的呢?缺省情况下priority_queue利用max-heap(大顶堆)完成对元素的排序,这个大顶堆可以看成是complete binary tree(完全二叉树)。
2023-11-20 09:08:06
181
原创 【代码随想录刷题】Day15 二叉树02
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。给你一个二叉树的根节点 root , 检查它是否轴对称。
2023-11-17 19:45:44
213
原创 【代码随想录刷题】一口气打10道层次遍历 打打打
给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。
2023-11-17 19:34:33
266
原创 【代码随想录刷题】Day14二叉树01
那么再看看中序遍历,中序遍历是左根右,先访问的是二叉树顶部的节点,然后一层一层向下访问,直到到达树左面的最底部,再开始处理节点(也就是再把节点的数值放进result数组中),这就造成了处理顺序和访问顺序是不一致的。因为前序遍历的顺序是根左右,先访问的元素是根节点,要处理的元素也是根节点,所以上面才能写出相对简洁的代码,因为要访问的元素和要处理的元素顺序是一致的,都是根节点。前序遍历是根左右,每次先处理的是根节点,那么先将根节点放入栈中,然后将右孩子加入栈,再加入左孩子。这样,二叉树的前序遍历基本就写完了。
2023-11-17 09:39:01
170
原创 【代码随想录刷题】二叉树的理论基础
是 n 个有限元素的集合,该集合或者为空,或者是由一个根节点加上两棵不相交的,被分别称为左子树和右子树的二叉树组成。1.当集合为空时,该二叉树称为空二叉树2.在二叉树中,一个元素也称为一个节点3.每个节点最多有两棵子树,即二叉树不存在度大于2的节点4.二叉树的子树有左右之分,其子树的次序不能颠倒,因此二叉树是有序树int val;
2023-11-16 17:41:29
367
原创 【代码随想录刷题】Day13 栈与队列
【239】滑动窗口最大值【347】前K个高频元素【239】滑动窗口最大值给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回 滑动窗口中的最大值 。解释:滑动窗口的位置 最大值[1 3 -1] -3 5 3 6 7 31 [3 -1 -3] 5 3 6 7 31 3 [-1 -3 5] 3 6 7
2023-11-16 07:52:39
146
原创 中缀表达式和后缀表达式
我们日常用的就是中缀表达式,如:(9+(10-6)*4)/ 5后缀表达式,也称逆波兰式,指运算符处于两操作数后面。如: 13 * ((3 + 8) * 4),后缀表达式为 13 3 8 + 4 * *
2023-11-15 18:11:17
704
1
原创 【代码随想录刷题】Day11 栈与队列
题意其实就像我们在写代码的过程中,要求括号的顺序是一样的,有左括号,相应的位置必须要有右括号。如果还记得编译原理的话,编译器在 词法分析的过程中处理括号、花括号等这个符号的逻辑,也是使用了栈这种数据结构。再举个例子,linux系统中,cd这个进入目录的命令我们应该再熟悉不过了。
2023-11-15 15:26:36
419
原创 【代码随想录刷题】Day10 栈与队列
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true;否则,返回 false。
2023-11-15 08:33:21
230
原创 Java基础-----Object、Wrapper
Object位于java.lang包,这是所有类的直接或间接的父类,是java中唯一没有父类的类。java中的所有类(包括JDK带的类和用户自定义的类),都是从Object扩展来的。Object类中的所有方法,都是可以被子类继承的。Object类有构造方法class A{基本数据类型(8种),不是对象,提供了包装类,将基本数据类型封装成对象来操作基本数据类型通过包装类能够完成相互转换(除去boolean),以及和String类做转换包装类中还包括了基本数据类型相关处理的属性和其他方法。
2023-11-14 18:48:23
168
原创 java中的队列Queue
双端队列又名double ended queue,简称deque,双端队列没有队列和栈这样的限制级,它允许两端进行入队和出队操作,也就是说元素可以从队头出队和入队,也可以从队尾出队和入队。可以看出,Java中的Queue是一个接口,需要通过实现这个接口的类来实例化对象,LinkedList实现了Queue接口,可以通过LinkedList实例化,在顺序队列中,出现了假溢出问题,那循环队列就是为了假溢出问题的,假溢出造成了内存浪费,循环队列可以使得内存得到有效的利用。为什么会有循环队列?
2023-11-13 17:26:37
650
原创 java中的栈Stack
可以注意到,当栈为空时,再进行出栈操作时,会报错:EmptyStackException。栈是特殊的顺序表,可以用链表和数组的方式来实现,但是一般采用数组来实现。可以看到,Stack继承了Vector。栈的插入操作称为进栈/压栈,数据在栈顶。栈的删除操作称为出栈。
2023-11-13 15:03:23
212
原创 【代码随想录刷题】Day09 字符串
划重点!!!双指针法是字符串处理的常客。KMP算法是字符串查找最重要的算法,但彻底理解KMP并不容易字符串是若干字符组成的有限序列,也可以理解为是一个字符数组。
2023-11-05 11:47:29
114
原创 KMP算法相关知识
因为是由三位学者发明的:Knuth , Morris 和 Pratt ,所以取了三位学者的名字的首字母。所以叫做KMPnext数组其实就是一个前缀表(prefix table)那么前缀表有什么作用呢?前缀表是用来回退的,它记录了模式串与主串(文本串)不匹配的时候,模式串应该从哪里开始重新匹配举个例子:要在文本串:aabaabaafa中查找是否出现过一个模式串:aabaaf(请记住文本串和模式串的作用,要不然很容易懵)不难看出,文本串中第6个字符b和模式串中的第6个字符f不匹配了。
2023-11-04 16:53:19
146
原创 【代码随想录刷题】Day08 字符串
现需将路径加密,加密方法为将 path 中的分隔符替换为空格 " ",请返回加密后的字符串。使用一个新的对象,复制str,复制的过程对其判断,是分隔符.则替换为空格" ",否则直接复制,类似于数组复制。s 中使用至少一个空格将字符串中的 单词 分隔开。解释:如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。输入:s = [“H”,“a”,“n”,“n”,“a”,“h”]输入:s = [“h”,“e”,“l”,“l”,“o”]输出:[“h”,“a”,“n”,“n”,“a”,“H”]
2023-11-03 14:23:19
202
原创 【代码随想录刷题】n数之和总结
是四个独立的数组,只要找到nums1[i]+nums2[j]+nums3[k]+nums4[l]==0就可以,不硬考虑重复的四个元素相加等于0的情况。,然后循环内有left和right下标作为双指针,找到nums[i]+nums[k]+nums[left]+nums[right]==target。,然后循环内有left和right下标作为双指针,找到nums[i]+nums[left]+nums[right]==0。那么一样的道理,五数之和、六数之和等等都是采用这样的解法。使用双指针解法:首先是。
2023-11-03 07:28:30
106
原创 【代码随想录刷题】Day07 哈希表
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!这么写就是当前使用 nums[i],我们判断前一位是不是一样的元素,在看 {-1, -1 ,2} 这组数据,当遍历到 第一个 -1 的时候,只要前一位没有-1,那么 {-1, -1 ,2} 这组数据一样可以收录到 结果集里。数据量大的话就能体现出差别来了。输入:nums1 = [1,2], nums2 = [-2,-1], nums3 = [-1,2], nums4 = [0,2]
2023-11-02 17:55:48
226
原创 【第4章】程序计数器(PC寄存器)
JVM中的程序计数寄存器(rogram Counfer Register) 中,Register 的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有 把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子), 并且也不容易引起一 些不必要的误会。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。它是一块很小的内存空间,几乎可以忽略不记。也是运行速度最快的存储区域。
2023-09-23 09:23:19
1333
1
原创 【第3章】运行时数据区概述及线程
内存是非常重要的系统资源,是硬盘和CPU的中间合库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的JVM对于内存的划分方式和管理机制存在着部分差异。Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。灰色的为单独线程私有的,红色的为多个线程共享的。
2023-09-23 09:18:54
93
1
原创 【第2章】类加载子系统
类加载器子系统负责从文件系统或者网络中加载class文件,class文件在文件开头有特定的文件标识ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine(执行引擎)决定加载的类信息存放于一块成为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是class文件中常量池部分的内存映射)
2023-09-21 22:48:44
606
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅