- 博客(67)
- 收藏
- 关注
原创 不可变集合的初步学习
在 Java 里,不可变集合是指集合创建之后,其内容就不能再被修改。Java 从 9 版本开始,提供了创建不可变集合的简便方法。如果集合的长度>数组的长度:数据在数组中放不下,此时会根据实际数据的个数,重新创建数组。如果集合的长度<=数组的长度:数据在数组中放的下,此时不会创建新的数组,而是直接用。toArray方法在底层会比较集合的长度与数组长度两者的大小。Map集合跟Set集合类似。此方法会把集合元素转为。
2025-04-28 13:40:34
105
原创 集合小练习
我们可以用一种方法来解决这种概率问题,我们定义数组,里面添加7个1和3个0,再随机的抽取数组里面的一个元素,1代表男生,0代表女生,然后用if语句来根据男生女生随机名字。我们使用remove方法,点一个从集合里面删除一个,因为要有多轮点名,所以在一轮点名结束之后,我们需要把删除的元素归还回集合。③:班级里N个学生,被点到的学生不会被点到,如果班级的学生都点完了,那么需要重写开始第二轮点名。②:班级里有N个男生,70%的概率点到男生,30%的概率点到女生。①:班级里有N个同学,实现随机点名的效果。
2025-04-23 14:58:55
193
原创 Map遍历
通过获取元素中的键,get到对应的值,通过增强for循环获取集合里的键,然后用get方法通过键获取值。跟之前的遍历差不多,原理是依次得到每一个键和值,再调用方法。通过键值对对象进行遍历。
2025-04-20 13:31:44
191
原创 Java-----双列集合(初识Map)
双列集合是 Java 集合框架中的重要组成部分,它以键值对(Key - Value)的形式存储数据,每个键对应一个值。
2025-04-20 12:04:44
229
原创 Java------初始Set集合
由于其元素存储位置是基于哈希值随机分布在哈希表中的,不存在像数组那样有逻辑顺序的索引概念,所以没有传统意义上的索引。添加元素时,根据元素的哈希值计算在数组中的索引位置进行存储。不同元素哈希值计算出的存储位置是随机分布在数组中的,和添加顺序没有必然联系,所以存和取的顺序通常不一样。当发生哈希冲突(不同元素计算出相同哈希值)时,冲突的元素会被添加到链表(或红黑树)中。3.当添加元素后,若哈希表的负载因子(已使用桶数 / 总桶数)达到阈值(默认 0.75 ) ,会进行扩容操作,重新计算元素在新数组中的位置。
2025-04-17 14:03:02
592
原创 平衡二叉树
在数据插入和删除过程中,如果数据分布不均匀,很容易出现树的高度失衡,导致树的形态偏向一侧,退化为的结构,就类型人的长短腿一样。这种非平衡的二叉树在进行查找、插入和删除操作时,时间复杂度会急剧上升。
2025-04-16 15:08:46
131
原创 java------泛型(通配符)
泛型,简单来说,就是参数化类型。在没有泛型之前,我们编写的代码往往只能处理特定类型的数据。例如,一个存储整数的列表就只能存储整数,无法存储其他类型的数据。而泛型允许我们在定义类、接口或方法时,使用类型参数来表示数据类型,这样在使用这些类、接口或方法时,可以指定具体的类型。
2025-04-15 15:23:39
103
原创 Java------Collection遍历方式
细节:报错NoSuchElementException(hasNext方法要于next方法配套使用)4.迭代器遍历时,不能用集合的方法进行增加或者删除。2.迭代器遍历完成,指针不会复位。3.循环中只能用一次next方法。方法用于检查迭代器中是否还有下一个元素,方法用于获取迭代器中的下一个元素。循环,能逐个访问集合中的元素。
2025-04-13 13:07:01
217
原创 算法小练习
当 n > 2 时,到达第 n 阶楼梯的最后一步可能是从第 n - 1 阶爬 1 阶上来的,也可能是从第 n - 2 阶爬 2 阶上来的。所以爬到第 n 阶楼梯的方法数等于爬到第 n - 1 阶楼梯的方法数加上爬到第 n - 2 阶楼梯的方法数,即 f(n) = f(n - 1) + f(n - 2)。当 n = 2 时,有两种方法:一次爬 2 阶;分两次,每次爬 1 阶,所以 f(2) = 2。当 n = 1 时,只有一种方法,即一次爬 1 阶,所以 f(1) = 1。首先找到递归的出口:第十天的时候。
2025-04-09 15:46:14
148
原创 Java------Arrays
用于复制数组,它可以创建一个新的数组,并将原数组的元素复制到新数组中,新数组的长度可以指定。(不足的用默认值0来填充)如果数组是基本数据类型的,需要变成其对应的包装类。是Arrays类中非常实用的方法之一,用于对数组进行排序。,并且针对不同类型的数组有相应的重载方法。用于在已排序的数组中查找指定元素的索引。细节:只能给引用数据类型的数组进行排序。则用于复制数组的指定范围。
2025-04-08 14:29:28
379
原创 MySQL------约束
用于唯一标识表中的每一行记录。一个表只能有一个主键,它可以由一个或多个列组成。用于建立两个表之间的关联关系。它确保一个表中的数据与另一个表中的数据保持一致。确保表中指定列的值是唯一的,但与主键约束不同的是,一个表可以有多个唯一约束。用于限制列的值必须满足特定的条件。确保表中的列不能包含NULL值。
2025-04-07 13:09:16
140
原创 Java递归算法
递归算法:简单来说,就是一个函数在其定义中调用自身的过程。这种自我调用并非无休无止,而是在满足特定的终止条件时停止。1-100之间的和=100+(1-99之间的和)1-99之间的和=99+(1-98之间的和)找规则:如何把大问题变成规模较小的问题。就像是将大事化小,小事化了的过程。找出口:什么时候不再调用方法。例如:计算1到100之间的和。
2025-04-01 15:23:51
134
原创 Java冒泡排序
冒泡排序是最经典也是最简单的排序算法,他的核心就像水中的气泡,较轻的气泡会逐渐上升到水面。在数组中,我们从第一个元素开始,依次比较相邻的两个元素,如果顺序不对(例如,在升序排序中,前一个元素大于后一个元素),则交换它们的位置。这样,每一轮比较过后,最大(或最小,取决于排序顺序)的元素就像气泡一样 “浮” 到了数组的末尾。
2025-04-01 14:37:41
97
原创 Java分块查找
为每个块创建一个索引项,索引项包含块内最大元素的值以及块的起始地址。例如,对于上述 1 - 100 分成 10 块的例子,第一个索引项可能是(10,地址 0),表示第一个块内最大元素是 10,块的起始地址是 0。利用二分查找在索引表中找到目标元素可能所在的块。例如,查找 55 时,通过二分查找索引表确定其在第 6 块。分块查找:其核心思想是将数据集合分成若干个块,每一块中的数据可以无序,但块与块之间必须有序。在确定的块内进行顺序查找,直到找到目标元素或遍历完整个块。分块查找概括就是:块内无序,块外有序。
2025-04-01 13:46:51
311
原创 MySQL日期时间函数
或 SELECT DATE_SUB(CURDATE(), INTERVAL 3 MONTH);或 SELECT DATE_ADD(CURDATE(), INTERVAL 10 DAY);SELECT DATE_FORMAT('2024-10-01', '%Y年%m月%d日');返回包含年、月、日、时、分、秒的完整时间戳,格式为 YYYY-MM-DD HH:MM:SS。一年中的第几周(00 - 53),周日为一周的第一天。一年中的第几周(00 - 53),周一为一周的第一天。
2025-03-30 15:40:50
672
原创 Spring---IoC(控制反转)
Spring提供了一种容器,称为IoC容器,用来充当IoC思想中的外部,就是将这个对象放在里面。在传统的软件开发中,组件之间的依赖关系通常是硬编码的,这使得组件之间的。对象的控制权由程序转移到外部,这种思想就叫做控制反转。
2025-03-30 15:39:34
158
原创 Calender类
是一个抽象类,它为我们提供了丰富的方法来操作日期和时间,像获取特定的日期字段、设置日期和时间、进行日期的加减运算等。add方法:能够对指定的时间字段添加或减去特定的时间量。在Java中,已经把这些索引定义成了常量。查表法:让数据跟数组里的索引产生对应关系。set方法:可以修改时间的年月或者日。5:一个月中的第几天(星期)4:一个月中的第几周。
2025-03-29 11:41:38
352
原创 MySQL基本函数
基本函数: 函数类别函数名称功能描述示例及结果数值函数 - 算术函数ABS(x)返回 x 的绝对值SELECT ABS(-5);返回5数值函数 - 算术函数CEIL(x)返回大于或等于 x 的最小整数SELECT CEIL(3.14);返回4数值函数 - 算术函数FLOOR(x)返回小于或等于 x 的最大整数SELECT FLOOR(3.14);返回3数值函数 - 算术函数ROUND(x, d)将 x 四舍五入到 d 位小数,省略 d 则默认四舍五入到整数SELECT ROUND(3.14159, 2);返
2025-03-25 16:00:17
468
原创 Java----用正则表达式爬取数据
在这种模式下,正则表达式会从字符串的起始位置开始,尽可能少地匹配符合模式的字符,一旦找到一个能满足匹配条件的最小子串,就停止匹配。带参数时,参数代表捕获组的编号,返回对应捕获组匹配到的子字符串。捕获组是通过在正则表达式中使用括号()定义的,捕获组编号从 1 开始,group(0)等同于无参数的group(),表示整个匹配的字符串。在这种模式下,正则表达式会从字符串的起始位置开始,尽可能多地匹配符合模式的字符,直到无法再匹配为止。例如,对于正则表达式a.*b,它会在字符串中寻找以a开头、以b结尾的最长子串。
2025-03-25 15:08:23
534
原创 MySQL多表查询
自然连接会遍历Employees表和Departments表,将Employees表中DepartmentID值与Departments表中DepartmentID值相同的行组合在一起,形成最终的结果集。所以,当我们确定合并的结果集中不会出现重复行,或者即使有重复行也不影响业务需求时,优先使用UNION ALL可以提高查询性能,减少数据库的处理开销。UNION ALL同样用于合并多个SELECT语句的结果集,但与UNION不同的是,它不会去除重复行。WHERE 子句在表连接中用于筛选符合特定条件的行。
2025-03-24 16:07:17
460
原创 Java----正则表达式的学习
插件::Any - rule 维护了一个庞大的常用正则表达式合集,涵盖了几乎所有常见的规则,如数字、字母、特殊字符的匹配,以及手机号、身份证号、社会信用代码、网址等特定格式的验证,目前已收录了 82 条常用的正则验证表达式。细节:忽略大小写的书写方式。可以忽略abc的大小写。
2025-03-24 14:54:03
174
原创 对象克隆以及BigInteger()方法,与BigDecima()方法的学习
先变成二进制的补码,再以32位为一组,再转换成十进制,正负号通过一个变量去表示,1表示正数,-1表示负数,放入数组当中。1.通过传递double类型的小数来创建对象是不精确的,不建议使用。2.通过传递字符串表示的小数来创建对象。这表示这是一个二进制的100。3.通过静态方法获取对象。
2025-03-23 14:32:58
210
原创 判断一个数是否为质数(两种方法解决问题)
当然我们也可以用刚学的Match方法中的sqrt,因为非质数的数的两个因子必然在其平方根的两边。首先定义一个number,判断一个数是否为质数,就要判断是否有除了1跟他本身以外的因子。我们就可以写这样的一个for循环,在循环里面通过if语句来进行判断。
2025-03-20 16:21:32
227
原创 JAVA小项目:拼图游戏(简单易懂可上手)
首先这是拼图游戏的界面,我们最后要完成这样的界面。我们要编写三个界面:登录界面,注册界面,游戏界面。
2025-03-20 14:06:34
1565
原创 JAVA中关于图形化界面的学习(GUI)动作监听,鼠标监听,键盘监听
在 Java 中,匿名内部类是一种特殊的局部内部类,它没有显式的类名。使用匿名内部类可以在需要创建一个实现某个接口或继承某个类的对象时,无需显式定义一个新的类,从而使代码更加简洁。接口的对象注册到组件上,当组件上发生特定动作(通常是点击操作)时,会触发相应的动作事件,进而调用监听器中的处理方法。一个鼠标点击一个按钮之后,可以分为:划入动作,按下动作,松开动作,划出动作。一个简单的鼠标监听机制,当你的鼠标做相应动作的时候,程序会打印相应的动作。接口相关的上下文中,许多支持用户交互产生动作事件的组件类(如。
2025-03-18 15:46:34
1158
原创 打乱一维数组中的元素,并按照4个一组的方式添加到二维数组中
这里的 i/4 会随着 i 的递增,以每 4 个元素为一组,逐行填充到二维数组中;而 i%4 则用于确定当前元素在该行的列索引,实现了逐行逐列的填充。一维数组:int[] tempArr={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};遍历之后,可以把打乱的值在赋值给数组中。遍历一维数组temp得到每一个元素,把每一个元素依次添加到二维数组当中。这样就完成了打乱并添加到二维数组中。
2025-03-15 15:58:06
244
原创 条件运算符
语句是一个用于筛选数据的条件运算符,它可以帮助你从表中选取指定范围内的数据。列的值为 'Class A' 或 'Class C' 的所有行。百分号(%):代表任意数量(包括零个)的任意字符。_:比如你要查询第2个字符是a的员工信息。例如:可以查询包含字符‘a’的员工信息。在 MySQL 中,BETWEEN。下划线(_):代表单个任意字符。
2025-03-15 15:09:18
281
原创 SQL--算术运算符
此代码将 sales_summary 表中 total_sales 列的值除以 num_customers 列的值,计算平均销售额,并将结果以 average_sale 列名返回。该代码将 products 表中 price 列的值都乘以 1.1,模拟加上 10% 的税,并将结果以 price_with_tax 列名返回。不同数据库系统对取模运算符的支持可能有所不同,有些数据库使用 %,有些则使用 MOD() 函数。5. 取模运算符(% 或 MOD() 函数)2. 减法运算符(-)4. 除法运算符(/)
2025-03-14 16:02:50
362
原创 SELECT...FROM
DISTINCT:如果一个公司里面在50号部门的员工有很多,可以把他们放在一起,没必要都打印出来,这时可以用DISTINCT。当我们要查的表,表名跟关键字一样时,用着重号来修饰就可以了。不要使用' '(字符串,日期时间类型的变量需要使用一对‘’表示)SELECT 字段1,字段2,...FROM 表名。*:表中的所有的字段(或列)空值参与运算,结果一定为空。显示了表中字段的详细信息。空值:null不等于0.
2025-03-13 16:15:48
175
原创 类的五大成员(内部类)
这不是一个类,这是new出来的对象,真正没有名字的类是{}里面的,对于{}前面的Animal来说,要么是继承关系,要么是实现关系,如果Animal是个接口那就是实现关系,如果是个类,那就是继承关系。内部类:在一个类的里面再定义一个类,内部类表示的事物是外部类的一部分,内部类单独出现没有任何意义。将内部类定义在方法里面就叫局部内部类,类似于方法里面的局部变量。隐藏了名字的内部类,可以写在成员位置,也可以写在局部位置。整体就是一个类的子类对象或者接口的实现类对象。外部类要访问内部类的成员,必须创建对象。
2025-03-13 13:45:45
113
原创 Java中default关键字
从 Java 8 开始,接口中可以定义默认方法,使用default关键字来修饰。默认方法为接口提供了具体的方法实现,这样实现该接口的类可以选择是否重写这些默认方法。// 定义一个接口// 抽象方法// 默认方法System.out.println("这是一个默认方法");// 实现接口的类@OverrideSystem.out.println("实现抽象方法");
2025-03-11 14:26:17
339
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人