- 博客(45)
- 收藏
- 关注
原创 Stream流
Stream流结合Lambda表达式,简化了集合和数组的操作。使用步骤包括获取Stream流、通过中间方法处理数据,最后使用终结方法处理数据。获取Stream流的方式有:单列集合通过Collection的stream()方法,双列集合需通过keySet()或entrySet()转换,数组通过Arrays.stream(),零散数据通过Stream.of()。
2025-05-20 21:26:57
1884
原创 GUI图形化演示
在 Java 的JFrame中,setLayout方法用于设置容器的布局管理器。布局管理器决定了容器中组件的排列方式。JFrame默认使用,但可以通过setLayout方法更改为其他布局管理器。好处:布局方式可以让组件的位置随着窗口的大小而改变。如果默认的布局管理器不满足需求,可以通过实现接口来自定义布局。自定义布局需要实现接口中的方法,如等。除了使用Java提供的标准监听器接口,还可以自定义监听器接口和实现类。// 自定义监听器接口,定义了事件处理方法。
2025-05-15 18:38:53
578
原创 泛型和集合的认识
单列集合就是一个集合存的都是一个,单一类型的对象,每个对象都是独立存在的,不和其他的对象存在关系双列集合恰恰相反,他一次性存入两个对象或者数据,这两个对象或者数据存在相互映射关系,比如存入,男和女,那么男就映射女,先存入的叫做键(Key)后存入和叫做值(Value);单列集合的性质、数据结构与特性单列集合是指只存储单一类型的对象,即这些集合中的元素都是独立存在的,不与其他元素形成键值对关系。Java 中的主要单列集合包括 List和 Set。List。
2025-05-13 00:51:58
669
原创 Lambda表达式
Lanbda是一个匿名函数,我们可以把Lambda表达式理解为一段可以传递的代码,他可以写出更简洁,更灵活的代码,作为一种更紧凑的代码风格,使Java语言表达能力得到了提升。只留下方法体和形参。然后在方法体和形参之间加一个箭头就能运行了。必须是接口的匿名内部类·,接口中只能有一个抽象方法。简化函数式接口的匿名内部类写法。将一个字符串按照长度输出出来。用处:简化匿名内部类。在下面先写一个内部类。
2025-05-12 19:59:01
217
原创 常用实用类
Object类是所有其他类的根类,位于java.lang包中,在编译时会被自动导入。这意味着任何未显式声明父类的类都会隐式继承自Object类1。String类String表示不可变的字符序列。一旦创建了一个String对象,它的值就不能改变4。这种不可变性使得String更加安全,但也带来了性能上的开销,因为每次修改字符串时都会生成一个新的对象。类是一个可变的字符序列容器,支持线程安全的操作。通过内置的同步机制,多个线程可以同时访问同一个实例而不会引发数据竞争问题3。
2025-04-26 01:14:43
861
原创 内部类与异常类
java无法为这个世界上全部问题都提供相应的异常类来代表,如果企业自己的某种问题,,想通过异常来表示,以便用异常来管理这个问题,那就需要自己来定义异常类了。有三个步骤选择基类(自定义运行时异常还是编译是异常)定义异常类抛出异常类自定义异常的种类:定义一个异常类继承RuntimeExcetion重写构造器通过throw new 异常类(xxx)来创建异常对象并抛出。编译阶段报错,提醒不强烈,运行的时候才会出现。定义一个异常类继承Exception.重写构造器。
2025-04-25 00:31:29
792
原创 Java关于接口
public interface 接口名{}接口不能实例化接口和类之间是实现关系,通过implements关键字表示public class 类名 implements 接口名{}接口的子类(实现类)(接入接口的类) 1.要么重写接口中的所有抽象方法,2.要么是抽象类。
2025-04-22 23:33:10
733
原创 Java关于抽象类和抽象方法
抽象方法的定义格式:public abstract 返回值类型 方法名(参数列表)抽象类的定义格式:public abstract class 类名{}
2025-04-01 22:01:52
249
原创 算法学习之BFS
我之前疑惑的点是while(!q.empty())不知道什么时候停止,后来想了想,觉得如果广搜到最后一个位置的话,怎么判断,所以在代码中加了一个判断是否到达目标点的判断。从起点开始,往前走一步,记录下所有第一步能走到的点开始,然后从所有第一部能走到的点开始向前走第二步,重复下去,一直到终点,输出步数即可,关于BFS我的理解是根据离我们当前这个点的权重来移动,这里权重也可以理解为离这个点的距离,实现方式:广度优先搜索。下面这个做法是模拟队列。下面是用队列写的方法。
2025-03-30 16:19:31
382
原创 JAVA关于继承
this:理解为一个变量,表示方法调用者的地址值。super():代表父类存储空间。关键字 访问成员变量 访问成员方法 访问构造方法this this.成员变量 this.成员方法() this.()访问本类成员变量 访问本类成员方法 访问本类构造方法super super.成员变量 super.成员方法() super()访问父类成员变量 访问父类成员方法 访问父类构造方法this.()访问本类构造方法可能有人不懂,写一段代码.int age;//this.表示调用其他构造方法。
2025-03-27 02:53:13
2185
原创 JAVA关于static静态
这是个方法类,可以看到构造方法用private修饰不能创建对象,不过能用方法。static表示静态,是java中的一个修饰符,可以修饰成员方法,成员变量。2.私有化构造方法,(不创造对象,因为只是个方法,之调用其中的方法)创造一个学生类,变量有校长,在一个学校的学生都共用一个校长吧?所以可以定义校长为static String name;这里提到了工具类回顾一下三种类。3.方法定义为静态(都可以用)
2025-03-26 19:04:54
478
原创 DFS深搜
给定一个整数 n𝑛,将数字 1∼n 排成一排,将会有很多种排列方法。按字典序输出所有排列方案,每个方案占一行。在这里假如n=3,需要看一共有几种组合方法。现在,请你按照字典序将所有的排列方法输出。对于DFS深度搜索就像是一条路走到黑。对于这道题把思路转化成代码就是。共一行,包含一个整数 n。红色的就是 深搜的路线;
2025-03-23 20:22:19
257
原创 JAVA关于String字符串
可以看作是一个容器,创建之后里面的内容是可以改变的作用:提高字符串的操作效率public StringBuilder append(任意类型) //添加数据,并返回对象本身public StringBuilder reverse()//反转容器中的内容从头到尾public int length() //返回长度(字符出现的个数)public String toString()//通过toString()就可以把StringBuilder转换成String。
2025-03-21 19:24:18
2072
原创 KMP字符串
核心思想:在每次失配时,不是把p串往后移一位,而是把p串往后移动至下一次可以和前面部分匹配的位置,这样就可以跳过大多数的失配步骤。而每次p串移动的步数就是通过查找next[ ]数组确定的。在这个图中1和3中的字符一样3后的不符直接移动至1看符合不符合,还不符合继续移动,不过这种移动是直接移动至能匹配的点,如果都不能匹配,最后会移动至头部从新开始,这样省了很多步骤。=p[j+1]的时候不用移动一格,只需要移动至下一次能匹配的位置。这个题最重要的是寻找模板式上的前缀和后缀的最长共有元素的长度。
2025-02-16 14:50:34
273
原创 P2440木材加工
因为偏左,如果只有1和0那么除数mid不能等于0,所以设置循环条件为l>1,也就是当1和0的时候mid等于1,如果切的总段数小于指定段数r等于mid-1也就是0,然后结束,输出l;题目意思:就是给你几段木头需要把他们切成固定段,保证切的长度最大,切的段数不就是,每段木头除以每段长度吗,如果切的总段数大于指定段数,长度就可以再加,就是用二分查找这个最大长度;如果连 1cm \text{1cm}1cm 长的小段都切不出来,输出。但是mid就不能等于l+r>>1;
2025-01-15 11:04:04
122
原创 P1678 烦人的高考志愿
根据 𝑛n 位学生的估分情况,分别给每位学生推荐一所学校,要求学校的预计分数线和学生的估分相差最小(可高可低,毕竟是估分嘛),这个最小值为不满意度。(或者l+r+1>>1)a[mid]肯定比a[l]或者a[r]离目标数更近;先说一下对这道题的理解,如果要找与目标数最进的数就要考虑a[mid]等于目标数的情况;所以上面的模板l=mid,r=mid;但是不能还和之前的二分模板一样,因为之前的暂停条件是l=r;因为不必须寻找等于目标数的元素,所以l和r不一定要相同;a[mid]=5>2;a[mid]=6>2;
2025-01-14 20:40:46
369
原创 P1102 A-B数对
那就是找A-C我的建议是从后开始一步步缩减范围,因为写二分不得先排序吗?从后往前一步步减小,因为B=A-CB小于A所以右指针直接变小就行。其中if (a[i] == a[i - 1])res += num;这一句就是优化一下,如果后一位数和前一位数相同的话,直接加num就行。可以看出在(1)中l和r在每次查找都是1和n。在(2)中左指针会跟着i的变化而变化。这道题因为要找A-B=C的个数;我们可以(1)固定A找B。也可以(2)固定B找A;两种方法,如果选择(1)但是(2)方法中用了。
2025-01-14 11:40:11
205
原创 二分查找关于check()问题
所以定义SL(Searchleft)函数查找左边界的时候mid=l+r>>1(整型运算不会进一所以对于整体偏左);我理解的二分查找分为查找左和查找右,因为一个数组,如果要查找这个数是数是第几位,还得知道在这个数组中有几个目标值。(1)check()函数的条件应该是a[mid]大于等于目标数,因为把如果大于等于的话,你就得规定了r=mid;(2)但是如果你把check()条件设置为a[mid]小于等于目标数,就的规定l=mid;查找2的话左边界为1,右边界为2;所以查找左边界应该如条件一。
2025-01-13 22:55:49
185
原创 N的阶乘和
在这之中a[i]就是上一个数的阶乘,然后求出一个阶乘后立刻用高精度加法加在b数组里;如果a的长度比b大,那么先操作b的长度至少等于a。可以把这个问题拆分为先求各位数的阶乘,再求和。对于阶乘,可以看作前一个数的阶乘×自己嘛;所以每求一个阶乘就是前一个的阶乘乘自己。
2025-01-13 11:49:10
189
原创 关于轮转的问题
1 2 3 4 5 6 7//编号。也就是轮转到第2位了可以看作(1+8)%7。//加上N和取余N其实抵消了(当这个数大于零的时候)再减去4也就是第5位可以看作(2-4+7)%7;所以这类题关于到了第几位数可以有一个模板吧;比如一个圈转完一圈后还会回到原点;减去B则会得到(C+N-B)%N;我说的轮转是在规定的一个范围内。加了A则会到(C+A)%N;//如果小于0则如本题;先用7个数演示一下;
2025-01-12 17:05:02
196
原创 高精度除法(高精度除低精度)
然后在加减乘的时候最低位是存的低位数,所以输出的时候从最后开始;在除法中第一位(也就是最高位)小于被除数则*10+下一位;所以用reverse函数反转在处理前导零。但是除法最先装的是高位数;所以在算法中也这样;
2025-01-12 15:36:12
190
原创 高精度减法
第一个if函数是当两个数的数位不相同时返回return A.size() > B.size();如果真返回1反之0;在sub(减法函数)中因为减法有时候需要进位,所以在函数中设置了。只不过多了个cmp函数判断在减法函数中谁减谁。新的动态数组加上 (t+10)%10;这个函数是判断在减法函数中到底是谁减谁。bool函数只返回0或者1(真或者假)for循环就是从最高位开始排查看谁大;如果t是
2025-01-12 12:46:26
169
原创 高精度乘法
首先需要把他们存入vector动态数组,放入函数,其次因为如果A[3]*B[3]的话先验算一下;等于说如果A[i ]*b[j]=C[i+j]最后对于C进行处理;
2025-01-12 10:13:59
162
原创 NOIP2015扫雷游戏
在 𝑛n 行 𝑚m 列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格。游戏的目标是在不翻出任何地雷格的条件下,找出所有的非地雷格。将*定为1,其他则为零,最后输出的时候,将1输出为*,其他位置则输出八个方向相加的值;字符 * 表示相应格子是地雷格,字符?用 * 表示地雷格,用周围的地雷个数表示非地雷格。现在给出 n 行 m 列的雷区中的地雷分布,要求计算出每个非地雷格周围的地雷格数。
2025-01-11 16:03:51
256
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人